我正在尝试安装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。这是这个包特有的问题,还是我做错了什么?


当前回答

有时会缓存以前安装的版本。

~$ pip install pillow==5.2.0

它返回以下内容:已满足要求:枕边==5.2.0 in/home/ubuntu/anaconda3/lib/python3.6/site-packages(5.2.0)

我们可以使用--no-cache-dir和-I来覆盖这个

~$ pip install --no-cache-dir -I pillow==5.2.0

其他回答

依赖打包有了一个新版本,它从代码库中删除了LegacyVersion快速解决方案可能是引脚封装==21.3

我相信,如果你已经安装了一个软件包,pip不会用另一个版本覆盖它。使用-I忽略以前的版本。

正如本文所建议的,一种方法是在pip中提到版本:

pip install -Iv MySQL_python==1.2.2

即使用==并提及版本号以仅安装该版本-一、 --忽略已安装程序包忽略已安装的程序包。

由于这似乎是pip第10版中引入的一个突破性更改,我降级为兼容版本:

pip install 'pip<10' 

此命令告诉pip安装低于版本10的模块版本。在virutalenv中执行此操作,这样您就不会破坏Python的站点安装。

有两种方法可以安装版本为的任何软件包:-A) 。pip安装-Iv包名称==版本B) 。pip安装-v包名称==版本

对于A

在这里,如果您在安装时使用-I选项(当您不知道软件包是否已安装时)(例如“pip-install-Iv-pyreadline==2.*”或其他),那么您将安装一个新的独立软件包,该软件包与具有不同版本的现有软件包相同。

对于B

首先,您可能需要检查是否没有违反要求。管道检查

2.然后查看已安装的pip列表

3.如果软件包列表中包含您希望使用特定版本安装的任何软件包,则更好的选择是先卸载此版本的软件包,方法是:pip卸载包名称

4.现在,您可以继续使用特定版本重新安装相同的软件包pip安装-v包名称==版本例如pip-install-vpyreadline==2*