如何使用pip和需求文件升级特定包?

时间:2010-12-27 00:57:02

标签: django virtualenv pip

我正在使用带有需求文件的pip,在virtualenv中,用于我的Django项目。我正在尝试升级一些软件包,特别是Django本身,我收到有关源代码冲突的错误:

Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))

在我的需求文件中将Django的版本号从1.2.3更新到1.2.4之后。我正在使用此命令实际进行升级:

pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>

我找不到任何触发整个包重新下载的标志。我甚至尝试先运行卸载命令,然后安装但没有骰子。也许我错过了什么?

10 个答案:

答案 0 :(得分:1115)

我运行了以下命令,它从1.2.3升级到1.4.0

pip install Django --upgrade

升级快捷方式:

pip install Django -U

注意:如果要升级的软件包有任何要求,此命令将另外将所有要求升级到可用的最新版本。在最新版本的pip中,you can prevent this behavior by specifying --upgrade-strategy only-if-needed。使用该标志,除非已安装的依赖包版本不再满足升级包的要求,否则不会升级依赖关系。

答案 1 :(得分:52)

我不确定这是不是你的问题,但在我的情况下,我无法将Django升级到1.2.4 - 我总是以1.2.3版本完成,所以我卸载了Django:

<virtualenv>/bin/pip uninstall Django

然后我删除了<virtualenv>/build/Django目录,最后我安装了正确的版本:

<virtualenv>/bin/pip install Django

希望这会有所帮助。

答案 2 :(得分:45)

根据pip docs示例3

pip install --upgrade django

但根据我的经验,使用此方法还会升级与之相关的任何包。例如:

假设您要使用此类方法升级需要somepackage的{​​{1}},它还会将django >= 1.2.4somepackage升级到最新更新。为了安全起见:

django

执行此操作将升级# assume you want to keep django 1.2.4 pip install --upgrade somepackage django==1.2.4 并将django保持为1.2.4版本

答案 3 :(得分:30)

--upgrade的快捷命令:

pip install Django --upgrade

时:

pip install Django -U

答案 4 :(得分:12)

如果您只想升级一个名为somepackage的特定包,那么您应该在最近版本的pip中使用的命令是

pip install --upgrade --upgrade-strategy only-if-needed somepackage

当您在django中开发一个当前只能使用特定版本的django(比如Django = 1.9.x)并希望使用bug-fix / new功能升级某个依赖包时,这非常有用。升级包依赖于django(但是在1.5之后可以使用任何版本的django)。 pip install --upgrade django-some-package的默认行为是将django升级到可用的最新版本,否则可能会破坏您的应用程序,但现在只会根据需要升级--upgrade-strategy only-if-needed依赖包。

答案 5 :(得分:10)

如果升级软件包,将卸载旧软件包。

执行此操作的一种便捷方法是使用此pip-upgrader,它还会更新requirements.txt文件中所选包(或所有包)的版本。

<强>安装

pip install pip-upgrader

<强>用法

激活你的virtualenv(重要的是,因为它还会在当前的virtualenv中安装新版本的升级包)。

cd进入项目目录,然后运行:

pip-upgrade

高级用法

如果要求放在非标准位置,请将它们作为参数发送:

pip-upgrade path/to/requirements.txt

如果您已经知道要升级的软件包,只需将它们作为参数发送:

pip-upgrade -p django -p celery -p dateutil

如果您需要升级到发布前/发布后版本,请在命令中添加--prerelease参数。

完全披露:我写了这个包。希望它有所帮助。

答案 6 :(得分:4)

通常,pip会自行清理并删除构建目录的内容。唯一不这样做的是:

  1. 您使用了--no-install选项
  2. 您正在使用可编辑的包
  3. 安装已取消或以其他方式中断。
  4. 在所有其他情况下,您不应该有build目录阻塞您的环境。

答案 7 :(得分:2)

定义特定的版本来升级对我有帮助,而不仅仅是升级命令。

pip3 install larapy-installer==0.4.01 -U

答案 8 :(得分:0)

为我解决了“ pip install -I --upgrade psutil --force”问题 之后,只需使用新版本卸载psutil,然后希望您可以突然安装旧版本(:

答案 9 :(得分:0)

我使用这个:

pip3 install -r  requirements.txt