ChatGPT解决这个技术问题 Extra ChatGPT

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

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

/build/Django 中的源代码版本 1.2.3 与 Django==1.2.4 冲突(来自 -r requirements/apps.txt(第 3 行))

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

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

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

请检查@dr-jimbob 的答案,因为最新版本的 pip 实际上会升级您要升级的软件包所依赖的所有其他依赖项。
@gcaprio 我宁愿建议你现在选择 marcin swierczynski 答案
在具有 Django 后端和 Angular 前端的应用程序中,requirements.txt 文件应位于根目录中(并与 py -m pip install -r requirements.txt 一起运行)还是应位于后端文件夹中,其中包含 {5 } 位于?

d
dr jimbob

我运行了以下命令,它从 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。使用该标志,除非依赖包的已安装版本不再满足升级包的要求,否则将不会升级依赖项。


这对我来说更新了我所有的打包并完全搞砸了一切!!!!文档指出: --将所有软件包升级到最新的可用版本。这是正确的还是我做错了什么?
@OrbiterFleet 我需要更新“请求”,所以我做了pip install Requests --upgrade“请求”被升级了。当我查看文档时,描述说“升级所有 specified 包”。
注意,它还会更新所有依赖项,并且可能会搞砸一切。最好的选择是卸载并重新安装该软件包。
升级特定软件包使用 pip install --upgrade django==1.4.0
这应该是根据问题的正确答案,或者问题本身是错误的。
A
Antonio

首先确保您已选中 the most voted answer

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

<virtualenv>/bin/pip uninstall Django

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

<virtualenv>/bin/pip install Django

这不是最佳做法。按照@JoeyG 的回答中的说明使用 pip install Django -Upip install Django --upgrade
@Ahmad 同意。在 pip 和 virtual env 中应该有一个平滑的更新过程。
P
Peter Mortensen

根据 pip documentation 示例 3:

pip install --upgrade django

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

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

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

这样做会升级 somepackage 并使 Django 保持在 1.2.4 版本。


很好,但您的解释令人困惑,因为您从 django 作为主包开始,然后在示例中使用 somepackage,然后使用 django 作为依赖项。
是的,它应该是 pip install --upgrade django==1.2.4 没有“somepackage”
A
Aaron Lelevier

--upgrade 的快捷命令:

pip install Django --upgrade

是:

pip install Django -U

如何编辑现有答案以添加此信息而不是(不完整的)答案?
@a1an 请建议您认为应该在“建议编辑”中添加哪些额外信息。谢谢
我的意思是您可以编辑 JoeyG 给出的答案,在此处添加您在上下文中提供的快捷方式选项。
P
Peter Mortensen

如果您只想升级一个名为 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 的依赖包现在只会在必要时升级。


P
Peter Mortensen

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

一种方便的方法是使用此 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 参数。

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


是否可以使用这种方法一次升级所有软件包(即,不列出它们)?
@MikePalmice 是的:pip-upgrade -p all 将升级您的所有软件包并更新需求文件,而无需您的任何输入。
不为我分叉。终于得到帮助: pip install -r requirements.txt --upgrade
P
Peter Mortensen

这为我解决了这个问题:

pip install -I --upgrade psutil --force

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


P
Peter Mortensen

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

pip3 install larapy-installer==0.4.01 -U

这对我有用 Python 3.8.1
B
Burhan Khalid

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

您使用了 --no-install 选项 您正在使用可编辑的软件包 安装被取消或以其他方式中断。

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


S
Shahab Rahnama

我用这个:

pip3 install -r  requirements.txt