我正在尝试安装MySQL_python的1.2.2版本,使用使用--no-site-packages选项创建的新虚拟环境。PyPi中显示的当前版本是1.2.3。有办法安装旧版本吗?我尝试过:
MySQL_python
--no-site-packages
pip install MySQL_python==1.2.2
但是,安装后,它仍然在站点包中显示MySQL_python-1.2.3-py2.6.egg-info。这是这个包特有的问题,还是我做错了什么?
MySQL_python-1.2.3-py2.6.egg-info
我相信如果你已经安装了一个包,pip不会用另一个版本覆盖它。使用-I忽略以前的版本。
-I
太长别读:
pip install -Iv
pip install -Iv MySQL_python==1.2.2
这些选项意味着什么:
--ignore-installed
-v
-vv
-Ivvv
有关详细信息,请参阅pip install --help
pip install --help
首先,我看到您要做的有两个问题。由于您已经安装了版本,您应该卸载当前现有的驱动程序或使用pip install -I MySQL_python==1.2.2
pip install -I MySQL_python==1.2.2
但是,您很快就会发现这不起作用。如果您查看pip的安装日志,或者如果您执行pip install -Iv MySQL_python==1.2.2,您会发现PyPI URL链接不适用于MySQL_pythonv1.2.2。
由于sourceforge.net最近的升级和PyPI的陈旧URL,下载链接404和失败路径链接正在无限重定向。
因此,要正确安装驱动程序,您可以按照以下步骤操作:
pip uninstall MySQL_pythonpip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download
您甚至可以使用pip install命令的版本范围。像这样的东西:
pip install
pip install 'stevedore>=1.3.0,<1.4.0'
如果包已经安装并且您想降级它,请添加--force-reinstall,如下所示:
--force-reinstall
pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
一种方法,如这篇文章中建议的,是在pip中提及版本:
pip
即使用==并提及版本号以仅安装该版本。-I, --ignore-installed忽略已安装的包。
==
-I, --ignore-installed
要安装特定的python包版本,无论是第一次、升级还是降级,请使用:
pip install --force-reinstall MySQL_python==1.2.4
MySQL_python版本1.2.2不可用,所以我使用了不同的版本。要从索引中查看所有可用的包版本,请排除版本:
pip install MySQL_python==
由于这似乎是pip版本10中引入的重大更改,我将其降级为兼容版本:
pip install 'pip<10'
此命令告诉pip安装低于版本10的模块版本。在virutalenv中执行此操作,这样您就不会搞砸Python的站点安装。
有两种方法可以安装任何版本的包:-A)。pip安装-Iv包名称==版本b)。pip install-v包名称==版本
对于一个
在这里,如果您在安装时使用-I选项(当您不知道软件包是否已经安装时)(例如“pip install-Iv pyreadline==2.*”或其他内容),您将安装一个新的单独的软件包,其中包含具有不同版本的相同现有软件包。
对于b
然后2.and查看已经安装的内容pip list
3.if软件包列表中包含您希望安装特定版本的任何软件包,那么更好的选择是先卸载此版本的软件包,通过pip卸载包名
4。现在您可以通过以下方式重新安装具有特定版本的相同软件包pip安装-v包名称==版本例如pip install-v pyreadline==2.*
有时,会缓存以前安装的版本。
~$ 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
我最近在使用pip的-I标志时遇到了一个问题,我想在某个地方记录:
-I将没有在继续之前卸载现有软件包;它只会将其安装在旧软件包的顶部。这意味着应该在版本之间删除的任何文件都将保留在原地。如果这些文件与其他安装的模块共享名称,这可能会导致奇怪的行为。
例如,假设有一个名为package的包。在一个package文件中,他们使用import datetime。现在,在package@2.0.0中,这指向标准库datetime模块,但在package@3.0.0中,他们添加了一个本地datetime.py作为标准库版本的替代品(无论出于何种原因)。
package
import datetime
package@2.0.0
datetime
package@3.0.0
datetime.py
现在假设我运行pip install package==3.0.0,但后来意识到我实际上想要版本2.0.0。如果我现在运行pip install -I package==2.0.0,旧的#3文件不会被删除,因此对#4的任何调用都会导入错误的模块。
pip install package==3.0.0
2.0.0
pip install -I package==2.0.0
在我的例子中,这表现为奇怪的语法错误,因为较新版本的包添加了一个仅与Python 3兼容的文件,当我降级包版本以支持Python 2时,我继续导入Python-3模块。
基于此,我认为在更新已安装的包版本时,卸载旧包总是比使用-I更好。
如果你想更新到最新版本,你不知道什么是最新版本,你可以键入。
pip安装MySQL_python
这将更新MySQL_python以获得可用的最新版本,您可以将其用于任何其他软件包版本。
下面的命令对我有用
python版本-2.7
包-python-jenkins
命令-$ pip install 'python-jenkins>=1.1.1'
$ pip install 'python-jenkins>=1.1.1'