569

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

>/build/Django 中的源<virtualenv具有与 Django==1.2.4 冲突的版本 1.2.3(来自 -r requirements/apps.txt(第 3 行))

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

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

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

4

10 回答 10

1518

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

pip install Django --upgrade

升级快捷键:

pip install Django -U

注意:如果您要升级的软件包有任何要求,此命令会将所有要求额外升级到可用的最新版本。在最新版本的 pip 中,您可以通过指定--upgrade-strategy only-if-needed. 使用该标志,除非依赖包的已安装版本不再满足升级包的要求,否则将不会升级依赖项。

于 2012-05-03T22:56:40.410 回答
78

首先确保您检查了投票最多的答案


我不确定这是否正是你的问题,但就我而言,我无法将 Django 升级到 1.2.4 - 我总是使用 1.2.3 版本完成,所以我卸载了 Django:

<virtualenv>/bin/pip uninstall Django

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

<virtualenv>/bin/pip install Django
于 2011-01-03T09:56:19.153 回答
72

根据 pip文档示例 3:

pip install --upgrade django

但是根据我的经验,使用这种方法也会升级任何与之相关的包。例子:

假设您要升级somepackage需要Django >= 1.2.4使用这种方法,它也会升级somepackage django最新的更新。为了安全起见,请执行以下操作:

# Assume you want to keep Django 1.2.4
pip install --upgrade somepackage django==1.2.4

这样做会将somepackageDjango 升级并保持到 1.2.4 版本。

于 2015-01-07T05:16:15.820 回答
41

的快捷命令--upgrade

pip install Django --upgrade

是:

pip install Django -U
于 2014-08-31T13:04:25.033 回答
24

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

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

当您在 Django 中开发当前仅适用于特定版本的 Django(例如 Django=1.9.x)并且想要升级一些具有错误修复/新功能的依赖包并且升级的包依赖的应用程序时,这非常有用在 Django 上(但它适用于 1.5 之后的任何版本的 Django)。

的默认行为是pip install --upgrade django-some-package将 Django 升级到可用的最新版本,否则可能会破坏您的应用程序,尽管--upgrade-strategy only-if-needed现在仅在必要时升级依赖包。

于 2016-11-29T22:03:37.917 回答
18

如果你升级一个包,旧的将被卸载。

一个方便的方法是使用这个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请在命令中添加参数。

完全披露:我写了这个包。

于 2017-04-27T20:22:15.960 回答
11

这为我解决了这个问题:

pip install -I --upgrade psutil --force

之后只需使用新版本卸载 psutil 并跳你可以突然安装旧版本(:

于 2019-07-14T15:11:40.223 回答
7

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

pip3 install larapy-installer==0.4.01 -U
于 2020-04-07T14:30:27.467 回答
4

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

  1. 您使用了该--no-install选项
  2. 您正在使用可编辑包
  3. 安装被取消或以其他方式中断。

在所有其他情况下,您不应该有build阻塞环境的目录。

于 2012-05-04T00:43:14.780 回答
-1

我用这个:

pip3 install -r  requirements.txt  
于 2019-10-04T10:31:57.833 回答