我正在尝试安装1.2.2版的mysql_python适配器,使用一个使用--no-site-packages选项创建的新的virtualenv。Pypi中显示的当前版本为1.2.3。有没有安装旧版本的方法?我找到一篇文章,说应该这样做:
1
| pip install MySQL_python==1.2.2 |
但是,安装后,它仍然在站点包中显示MySQL_python-1.2.3-py2.6.egg-info。这是一个特定于此包的问题,还是我做错了什么?
- 感谢您的提示,这对我通过pip install MySQL_python==1.8.9安装旧版本的openpyxl很有用。
- 是的,这也适用于熊猫,谢谢:pip install -Iv pandas==0.12.0。
- 也为我工作过:pip安装xvbwrapper==0.2.4
首先,我看到两个问题,你想做什么。因为您已经安装了一个版本,所以您应该卸载当前的现有驱动程序或使用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链接正在无限地重新定向。
因此,要正确安装驱动程序,可以执行以下步骤:
1 2
| 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 |
- 不过,拥有多个版本应该没有问题,这就是为每个版本创建新文件夹并使用.pth文件的要点。
- 这将安装正确的版本,因此是这个问题的答案-谢谢您的帮助。现在遇到了另一个问题:"错误:命令'/usr/bin/gcc-4.2'在构建'mysql'扩展时失败,退出状态为1"。我知道我有gcc,mysql_python1.2.3的安装很顺利。其他人看到这个问题了吗,特别是1.2.2?
- 请再问一个问题,并发布您从PIP得到的错误消息。
- 当然-链接如下:stackoverflow.com/questions/5226945/…
- 好奇的是,如果我们已经删除了现有的安装程序,为什么要使用-i选项,您能提供一些细节吗?
- 埃多克斯1〔2〕为我耍了这个花招。
甚至可以在pip install命令中使用版本范围。像这样:
1
| pip install 'stevedore>=1.3.0,<1.4.0' |
如果已经安装了软件包,并且您希望降级,请按如下方式添加--force-reinstall:
1
| pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall |
- 例如:$ pip install 'xkcdpass==1.2.5' --force-reinstall。
- 很完美!在ubto 15.04上运行,它(自动)用指定的版本替换了现有的库。解决了我所有的问题!
- 只是要提到,对于python 2,我必须使用双引号"而不是"
- @handofc'thuhlu我认为我们必须对windows使用双引号,而不是python 2
- 在Windows上使用双引号:pip install"stevendore>=1.3.0,<1.4.0"
- 或者(在Windows中)根本不使用任何引号:pip install xkcdpass==1.2.5 --force-reinstall。
本文建议的一种方法是在pip中提到版本为
pip install -Iv MySQL_python==1.2.2
也就是说,使用==并提到版本号,只安装该版本。-I, --ignore-installed忽略已安装的软件包。
- 当心!我有这样的经验,这安装了彼此相邻的不同版本!有趣的是,pip list没有意识到这一点,但conda list是(并将显示不同的包版本)。它也完全混淆了Pycharm。
要安装特定的python包版本(无论是第一次安装、升级还是降级),请使用:
1
| pip install --force-reinstall MySQL_python==1.2.4 |
mysql_python版本1.2.2不可用,所以我使用了不同的版本。要从索引中查看所有可用的包版本,请排除该版本:
1
| pip install MySQL_python== |
- 对于PIP 10.0.1,这是唯一的工作解决方案。"-i"选项实际上重新安装了以前的版本。
我相信如果您已经安装了一个包,PIP不会用另一个版本覆盖它。使用-I忽略以前的版本。
- 我没有安装它-使用用--no site packages选项创建的新virtualenv
- 好吧,所以你要求1.2.2版,但它仍然安装1.2.3版,而没有安装其他版本?您使用的语法对于获取特定版本是正确的。
- "使用用--no-site packages选项创建的新的virtualenv";您可能需要使用命令unset PYTHONPATH对其进行处理,以防止pip看到预安装的库。
有时会缓存以前安装的版本。
1
| ~$ 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来覆盖这个
1
| ~$ pip install --no-cache-dir -I pillow==5.2.0 |
由于这似乎是PIP版本10中引入的一个突破性的更改,所以我降级到兼容版本:
此命令告诉PIP安装低于版本10的模块版本。在virutalenv中执行此操作,这样就不会破坏您的站点安装python。
我最近在使用pip的-I标志时遇到了一个问题,我想把它记录在某个地方:
-I在继续之前不会卸载现有的包;它只会安装在旧包的顶部。这意味着应该在版本之间删除的任何文件都将保留在适当的位置。如果这些文件与其他已安装模块共享名称,这可能会导致奇怪的行为。
例如,假设有一个名为package的包。在package的一个文件中,他们使用import datetime。现在,在[email protected]中,这指的是标准库datetime模块,但在[email protected]中,他们添加了一个本地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安装-iv包名称==版本B)pip安装-v包名称==版本
对于一个
在这里,如果您在安装时使用-i选项(当您不知道包是否已安装时)(如"pip install-iv pyreadline==2.*"或其他),您将安装一个新的独立包,该包与具有不同版本的同一现有包具有相同的版本。
对于乙
首先,您可能希望检查是否有损坏的需求。匹普支票
2.然后查看已安装的匹普列表
3.如果软件包列表中包含您希望使用特定版本安装的任何软件包,则更好的选择是先卸载此版本的软件包,方法是PIP卸载包名称
4.现在您可以继续使用特定版本重新安装同一个包,方法是pip安装-v包名称==版本例如,PIP安装-V Pyreadline==2.*