我正在尝试使用使用该选项MySQL_python
创建的新 virtualenv安装 1.2.2 版本。--no-site-packages
PyPi 中显示的当前版本是1.2.3。有没有办法安装旧版本?我试过了:
pip install MySQL_python==1.2.2
但是,安装后,它仍会显示MySQL_python-1.2.3-py2.6.egg-info
在站点包中。这是这个包特有的问题,还是我做错了什么?
TL;博士:
pip install -Iv
(即pip install -Iv MySQL_python==1.2.2
)这些选项的含义:
-I
代表--ignore-installed
它将忽略已安装的软件包,覆盖它们。-v
是冗长的。您可以将更多的冗长(即-vv
)组合起来最多 3 次(例如-Ivvv
)。有关详细信息,请参阅pip install --help
首先,我发现您正在尝试做的事情有两个问题。由于您已经安装了版本,您应该卸载当前现有的驱动程序或使用pip install -I MySQL_python==1.2.2
但是,您很快就会发现这是行不通的。如果您查看 pip 的安装日志,或者pip install -Iv MySQL_python==1.2.2
您会发现 PyPI URL 链接不适用于 MySQL_python v1.2.2。您可以在这里验证这一点:http: //pypi.python.org/pypi/MySQL-python/1.2.2
由于 sourceforge.net 的最近升级和 PyPI 的旧 URL,下载链接 404 和后备 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 install
命令使用版本范围。像这样的东西:
pip install 'stevedore>=1.3.0,<1.4.0'
如果该软件包已经安装并且您想降级它,请添加--force-reinstall
如下:
pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
正如本文所建议的,一种方法是将版本提及pip
为:
pip install -Iv MySQL_python==1.2.2
即使用==
并提及版本号以仅安装该版本。-I, --ignore-installed
忽略已安装的软件包。
要安装特定的 python 包版本,无论是第一次、升级还是降级,请使用:
pip install --force-reinstall MySQL_python==1.2.4
MySQL_python 版本 1.2.2 不可用,所以我使用了不同的版本。要从索引中查看所有可用的包版本,请排除版本:
pip install MySQL_python==
我相信如果你已经安装了一个包,pip 不会用另一个版本覆盖它。用于-I
忽略以前的版本。
有时,先前安装的版本会被缓存。
~$ pip install pillow==5.2.0
它返回以下内容:
已满足要求:/home/ubuntu/anaconda3/lib/python3.6/site-packages (5.2.0) 中的pillow==5.2.0
我们可以使用 --no-cache-dir 和 -I 来覆盖它
~$ pip install --no-cache-dir -I pillow==5.2.0
由于这似乎是 pip 版本 10 中引入的一项重大更改,因此我降级为兼容版本:
pip install 'pip<10'
此命令告诉 pip 安装低于版本 10 的模块版本。在virutalenv中执行此操作,这样您就不会搞砸 Python 的站点安装。
以下命令对我有用
Python 版本 - 2.7
包 - python-jenkins
命令 -$ pip install 'python-jenkins>=1.1.1'
我最近在使用我想在某处记录pip
的标志时遇到了一个问题:-I
-I
在继续之前不会卸载现有的包;它只会将它安装在旧的之上。这意味着应该在版本之间删除的任何文件都将保留在原处。如果这些文件与其他已安装的模块共享名称,这可能会导致奇怪的行为。
例如,假设有一个名为package
. 在其中一个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
,则不会删除旧文件,因此任何调用都会导入错误的模块。datetime.py
import datetime
就我而言,这表现为奇怪的语法错误,因为较新版本的包添加了一个仅与 Python 3 兼容的文件,当我将包版本降级以支持 Python 2 时,我继续导入 Python-3-only 模块。
基于此,我认为-I
在更新已安装的包版本时卸载旧包总是比使用更可取。
有两种方法可以安装任何版本的软件包:- A)。pip install -Iv package-name == 版本 B)。pip install -v 包名 == 版本
为一个
在这里,如果您在安装时使用 -I 选项(当您不知道软件包是否已经安装时)(例如 'pip install -Iv pyreadline == 2.* '或其他东西),您将安装一个新的与具有某些不同版本的相同现有包的单独包。
对于乙
2.然后通过pip list查看已经安装的内容
3.如果软件包列表包含您希望安装特定版本的任何软件包,那么更好的选择是先卸载此版本的软件包,通过 pip uninstall package-name
4.现在您可以通过 pip install -v package-name==version重新安装具有特定版本的相同软件包, 例如 pip install -v pyreadline == 2.*
如果您想更新到最新版本并且您不知道可以键入的最新版本是什么。
pip install MySQL_python --upgrade
这将更新 MySQL_python 以获得最新版本,您可以将其用于任何其他包版本。