使用pip安装特定版本的包
我想在一个新创建的虚拟环境中安装 MySQL_python
的 1.2.2 版本,这个虚拟环境是用 --no-site-packages
选项创建的。现在在 PyPi 上显示的最新版本是 1.2.3。有没有办法安装这个旧版本呢?我试过:
pip install MySQL_python==1.2.2
但是安装后,还是在 site packages 里显示 MySQL_python-1.2.3-py2.6.egg-info
。这是这个包特有的问题,还是我做错了什么呢?
12 个回答
一种方法,如这篇文章所建议的,是在使用pip
时指定版本,具体写法如下:
pip install -Iv MySQL_python==1.2.2
也就是说,使用==
后面跟上版本号,这样就只会安装你指定的那个版本。而-I, --ignore-installed
这个选项可以忽略已经安装的包。
你甚至可以在使用 pip install
命令时指定一个版本范围。比如这样:
pip install 'stevedore>=1.3.0,<1.4.0'
如果这个软件包已经安装了,但你想把它降级,可以加上 --force-reinstall
,像这样:
pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
简而言之:
更新于2022年12月28日:
pip install --force-reinstall -v
举个例子: pip install --force-reinstall -v "MySQL_python==1.2.2"
这些选项的意思是:
--force-reinstall
是一个选项,可以强制重新安装所有包,即使它们已经是最新的。-v
是用来显示详细信息的。你可以组合使用,显示更多详细信息(比如-vv
),最多可以使用三次(例如--force-reinstall -vvv
)。
感谢 @Peter 提出的这个问题(看起来这个问题的背景在提问时已经变得更广泛了!),Python的文档提到使用 -I
时的一个注意事项,如果你的包是用不同的包管理器安装的,或者你的包版本不同,可能会导致安装失败。
原始回答:
pip install -Iv
(即pip install -Iv MySQL_python==1.2.2
)
这些选项的意思是:
-I
代表--ignore-installed
,这个选项会忽略已安装的包,直接覆盖它们。-v
是用来显示详细信息的。你可以组合使用,显示更多详细信息(比如-vv
),最多可以使用三次(例如-Ivvv
)。
想了解更多信息,可以查看 pip install --help
首先,我发现你在做的事情有两个问题。因为你已经安装了一个版本,你应该先卸载当前的驱动程序,或者使用 pip install -I MySQL_python==1.2.2
不过,你很快会发现这样做并不奏效。如果你查看 pip 的安装日志,或者执行 pip install -Iv MySQL_python==1.2.2
,你会发现 MySQL_python v1.2.2 的 PyPI URL 链接无法使用。你可以在这里验证: http://pypi.python.org/pypi/MySQL-python/1.2.2
下载链接返回404错误,并且由于 sourceforge.net 最近的升级和 PyPI 的旧链接,备用链接也在无限重定向。
所以,要正确安装驱动程序,你可以按照以下步骤操作:
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