我正在尝试安装MySQL_python的1.2.2版本,使用使用--no site packages选项创建的新virtualenv。PyPi中显示的当前版本是1.2.3。有没有办法安装旧版本?我尝试过:
pip install MySQL_python==1.2.2
但是,安装后,它仍然在站点包中显示MySQL_python-1.2.3-py2.6.egg-info。这是这个包特有的问题,还是我做错了什么?
我正在尝试安装MySQL_python的1.2.2版本,使用使用--no site packages选项创建的新virtualenv。PyPi中显示的当前版本是1.2.3。有没有办法安装旧版本?我尝试过:
pip install MySQL_python==1.2.2
但是,安装后,它仍然在站点包中显示MySQL_python-1.2.3-py2.6.egg-info。这是这个包特有的问题,还是我做错了什么?
当前回答
TL;博士:
截至2022-12-28年更新:
pip install—强制重新安装-v
例如:pip-install--force-restall-v“MySQL_python==1.2.2”
这些选项意味着什么:
--强制重新安装是重新安装所有软件包的选项,即使它们已经是最新的。-v表示verbose。您可以组合使用更详细的内容(例如-vv),最多可以使用3次(例如--force-restall-vvv)。
感谢@Peter强调了这一点(考虑到第一次提出这个问题的时间,问题的背景似乎已经扩大了!),Python文档讨论了使用-I的警告,因为如果安装了不同的包管理器,或者如果您的包是不同的版本,它可能会破坏您的安装。
原答覆:
pip install-Iv(即pip install-Iv MySQL_python==1.2.2)
这些选项意味着什么:
-我代表--ignore installed,它将忽略已安装的包,覆盖它们。-v表示verbose。您可以组合使用更详细的内容(例如-vv),最多3次(例如-Ivvv)。
有关详细信息,请参阅pipinstall--help
首先,我发现您尝试做的事情有两个问题。由于您已经安装了一个版本,您应该卸载当前现有的驱动程序或使用pip install-I MySQL_python==1.2.2
然而,你很快就会发现这行不通。如果您查看pip的安装日志,或者执行pip安装-Iv MySQL_python==1.2.2,您会发现PyPI URL链接不适用于MySQL_pithon v1.2.2。您可以在此处验证:http://pypi.python.org/pypi/MySQL-python/1.2.2
由于sourceforge.net最近的升级和PyPI的陈旧URL,下载链接404s和回退URL链接正在无限重定向。
因此,要正确安装驱动程序,可以执行以下步骤:
pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download
其他回答
要安装特定的python包版本,无论是第一次、升级还是降级,请使用:
pip install --force-reinstall MySQL_python==1.2.4
MySQL_python版本1.2.2不可用,因此我使用了不同的版本。要查看索引中的所有可用包版本,请排除该版本:
pip install MySQL_python==
TL;博士:
截至2022-12-28年更新:
pip install—强制重新安装-v
例如:pip-install--force-restall-v“MySQL_python==1.2.2”
这些选项意味着什么:
--强制重新安装是重新安装所有软件包的选项,即使它们已经是最新的。-v表示verbose。您可以组合使用更详细的内容(例如-vv),最多可以使用3次(例如--force-restall-vvv)。
感谢@Peter强调了这一点(考虑到第一次提出这个问题的时间,问题的背景似乎已经扩大了!),Python文档讨论了使用-I的警告,因为如果安装了不同的包管理器,或者如果您的包是不同的版本,它可能会破坏您的安装。
原答覆:
pip install-Iv(即pip install-Iv MySQL_python==1.2.2)
这些选项意味着什么:
-我代表--ignore installed,它将忽略已安装的包,覆盖它们。-v表示verbose。您可以组合使用更详细的内容(例如-vv),最多3次(例如-Ivvv)。
有关详细信息,请参阅pipinstall--help
首先,我发现您尝试做的事情有两个问题。由于您已经安装了一个版本,您应该卸载当前现有的驱动程序或使用pip install-I MySQL_python==1.2.2
然而,你很快就会发现这行不通。如果您查看pip的安装日志,或者执行pip安装-Iv MySQL_python==1.2.2,您会发现PyPI URL链接不适用于MySQL_pithon v1.2.2。您可以在此处验证:http://pypi.python.org/pypi/MySQL-python/1.2.2
由于sourceforge.net最近的升级和PyPI的陈旧URL,下载链接404s和回退URL链接正在无限重定向。
因此,要正确安装驱动程序,可以执行以下步骤:
pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download
我相信,如果你已经安装了一个软件包,pip不会用另一个版本覆盖它。使用-I忽略以前的版本。
我最近在使用pip的-I标志时遇到了一个问题,我想在某个地方记录:
-在继续之前,我不会卸载现有包;它会把它安装在旧的上面。这意味着任何应该在版本之间删除的文件都将保留在原地。如果这些文件与其他已安装的模块共享名称,这可能会导致奇怪的行为。
例如,假设有一个名为package的包。在其中一个包文件中,它们使用导入日期时间。现在,在package@2.0.0,这指向标准库datetime模块,但在package@3.0.0,他们添加了一个本地datetime.py作为标准库版本的替代品(无论出于什么原因)。
现在让我们假设我运行pipinstallpackage==3.0.0,但后来意识到我实际上想要2.0.0版本。如果我现在运行pipinstall-Ipackage==2.0.0,旧的datetime.py文件将不会被删除,因此任何导入datetime的调用都将导入错误的模块。
在我的案例中,这表现为奇怪的语法错误,因为较新版本的包添加了一个仅与Python 3兼容的文件,当我降级包版本以支持Python 2时,我继续导入仅Python-3的模块。
基于此,我认为在更新已安装的软件包版本时,卸载旧软件包总是比使用-I更好。
由于这似乎是pip第10版中引入的一个突破性更改,我降级为兼容版本:
pip install 'pip<10'
此命令告诉pip安装低于版本10的模块版本。在virutalenv中执行此操作,这样您就不会破坏Python的站点安装。