pip install:如何强制使用特定的软件包版本
Posted
技术标签:
【中文标题】pip install:如何强制使用特定的软件包版本【英文标题】:pip install: How to force a specific package version 【发布时间】:2013-03-19 09:42:06 【问题描述】:我正在尝试安装 Django 1.4.3,但是当我执行 pip install 时,pip 继续安装 Django 1.5 版本而不是 1.4.3
sudo pip install -I Django==1.4.3
返回:
Downloading/unpacking Django==1.4.3
Running setup.py egg_info for package Django
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
=== >>>> Requested Django==1.4.3, but installing version 1.5 <<<< ====
Installing collected packages: Django
Found existing installation: Django 1.5
Uninstalling Django:
Successfully uninstalled Django
Running setup.py install for Django
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
changing mode of /usr/local/bin/django-admin.py to 755
Successfully installed Django
Cleaning up...
但是如果我执行 pip freeze,它会一直显示
Django==1.5
我做错了什么?
谢谢
【问题讨论】:
愚蠢的问题,但是您是否尝试过卸载所有版本的 Django,然后运行您的命令? 是的,我做过,但没用。我也可以选择下载软件包并手动安装,但我想知道 pip 中是否有一个选项可以避免这种行为并强制使用 1.4.3 版本 你只试过pip install Django==1.4.3
是的,我做了,结果是一样的
【参考方案1】:
这可以/应该/可以通过在 pip 中清除 Django 的构建目录来帮助。 这有一个错误,因为版本 1.1 see here for details
如果您使用的是 OS X 或类似 unix 的系统,则可以在此处开始检查这些文件夹:
~/.pip
/tmp/pip-build-root (or pip-build-$USER, if you aren't running pip as root).
如果您在安装 Django 的第一个版本时没有指定新的构建文件夹。
祝你好运!
【讨论】:
它不起作用,无论是使用 -v 标志还是设置“Django 我很确定-V标志仅用于输出当前安装的pip版本,与pip install
无关。
@aiham 你是 100% 正确的,刚刚醒来并计划修复答案。
如果您使用的是 os x,请检查 ~/.pip 和 ~/tmp/ 文件夹。
我在 OS X 上,但它不存在。我在 /tmp/pip-build-root/ 中找到了它。我会清除它并再试一次,谢谢。【参考方案2】:
作为limelight says,您应该清空缓存并构建目录,或者使用--download-cache
和标志传入一个临时干净的位置。
$ pip help install
[...]
--download-cache <dir> Cache downloaded packages in <dir>.
-b, --build <dir> Directory to unpack packages into and build in. The default in a virtualenv is "<venv path>/build". The default for global installs is
"<OS temp dir>/pip-build-<username>".
我想警告任何读者不要使用sudo pip install
来安装 Django。它在系统范围内安装 Django。并且更改系统范围的版本可能会破坏依赖它的系统包。例如,Ubuntu MAAS 和 Cobbler 依赖于系统 django 包。这些通常是您不想破坏的服务。
如果您需要与系统包不同的版本,请使用virtualenv 将您的依赖项与系统隔离。
OP 似乎在 OSX 上,我不知道有任何服务器范围的 Mac Django,但这可能会改变。考虑安装带有sudo
的python 包,以将系统安装的python 更改为python 3;它现在可能有效,但有一些扑热息痛库存,因为你会头疼。
【讨论】:
在带有 cygwin 的 Windows 上,您需要上述两个标志才能让 pip 忽略缓存。这是一个奇怪的设计——有人会认为添加 -U 并强制一个版本意味着我真的想要那个版本,而不是碰巧在我的缓存中的随机版本。【参考方案3】:检查您的本地缓存并将其删除会有所帮助。我已经安装了 pymongo==2.5.2。安装pymongo==2.4.1,我把/tmp/pip-build-root/pymongo中的缓存去掉,然后我就成功安装了pymongo 2.4.1了。
【讨论】:
以上是关于pip install:如何强制使用特定的软件包版本的主要内容,如果未能解决你的问题,请参考以下文章
如何卸载使用 easy_install 安装的软件包的非活动版本