问题:使用pip安装特定的软件包版本
我正在尝试使用通过该--no-site-packages
选项创建的新virtualenv安装MySQL_python适配器的1.2.2版本。PyPi中显示的当前版本是1.2.3。有没有办法安装旧版本?我发现有一篇文章指出应该这样做:
pip install MySQL_python==1.2.2
但是,安装后,它仍显示MySQL_python-1.2.3-py2.6.egg-info
在站点包中。这是此软件包专用的问题,还是我做错了什么?
回答 0
TL; DR:
pip install -Iv
(即pip install -Iv MySQL_python==1.2.2
)
首先,我发现您要执行的操作有两个问题。由于您已经安装了版本,因此应该卸载当前的现有驱动程序或使用pip install -I MySQL_python==1.2.2
但是,您很快就会发现这不起作用。如果您查看pip的安装日志,或者执行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,下载链接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
回答 1
您甚至可以在pip install
命令中使用版本范围。像这样:
pip install 'stevedore>=1.3.0,<1.4.0'
如果该软件包已经安装,并且您想降级,请添加--force-reinstall
以下内容:
pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall
回答 2
一种方法,在提出这个职位,是提版本pip
为:
pip install -Iv MySQL_python==1.2.2
即使用==
并提及版本号以仅安装该版本。-I, --ignore-installed
忽略已经安装的软件包。
回答 3
要安装特定的python软件包版本,无论是第一次,升级还是降级,请使用:
pip install --force-reinstall MySQL_python==1.2.4
MySQL_python版本1.2.2不可用,因此我使用了其他版本。要从索引查看所有可用的软件包版本,请排除该版本:
pip install MySQL_python==
回答 4
我相信,如果您已经安装了软件包,pip不会用其他版本覆盖它。使用-I
忽略以前的版本。
回答 5
有时,先前安装的版本会被缓存。
~$ 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
回答 6
由于这似乎是pip版本10中引入的重大更改,因此我降级为兼容版本:
pip install 'pip<10'
该命令告诉pip安装低于版本10的模块版本。在virutalenv中执行此操作,这样就不会增加Python站点安装的麻烦。
回答 7
我最近在使用想要记录到某处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模块。
基于此,我认为-I
在更新已安装的软件包版本时,总是比使用旧软件包更可取。
回答 8
下面的命令对我有用
Python版本-2.7
包-python-jenkins
命令- $ pip install 'python-jenkins>=1.1.1'
回答 9
您可以通过两种方式安装任何版本的软件包: -A)。pip install -Iv软件包名称==版本 B)。pip install -v软件包名称==版本
为一个
在这里,如果您在安装时使用-I选项(当您不知道该软件包是否已安装时)(例如’pip install -Iv pyreadline == 2. *’之类的东西),则您将在安装新的单独的程序包,而相同的现有程序包具有不同的版本。
对于B
- 首先,您可能要检查是否有违反要求的情况。 点子检查
2.然后查看点子列表已经安装了什么
3.如果软件包列表中包含您要安装的特定版本的软件包,那么更好的选择是先通过pip uninstall package-name卸载该版本的软件包。
4.现在,您可以继续通过pip install -v package-name == version重新安装具有特定版本的相同软件包, 例如pip install -v pyreadline == 2. *
回答 10
如果要更新为最新版本,但您不知道可以输入的是最新版本。
pip安装MySQL_python –upgrade
这将更新可用的最新版本的MySQL_python,您可以将其用于任何其他软件包版本。