gpt4 book ai didi

python - pip3命令升级所有包,注意依赖冲突?

转载 作者:行者123 更新时间:2023-12-05 05:56:15 29 4
gpt4 key购买 nike

到目前为止,我已经使用(通过 How to upgrade all Python packages with pip )

pip3 list --format freeze --outdated | cut -d= -f1 | xargs pip3 install --upgrade-strategy eager --upgrade

升级我所有的 Python pip 包。到目前为止,它对我来说效果很好——除了一次,当我收到一种冲突信息时,不幸的是我没有保留它的副本;我的猜测是,它与这里提到的类似 https://pip.pypa.io/en/stable/user_guide/#fixing-conflicting-dependencies :

Due to conflicting dependencies pip cannot install
package_coffee and package_tea:
- package_coffee depends on package_water<3.0.0,>=2.4.2
- package_tea depends on package_water==2.3.1

无论如何,现在我只是尝试为我的 Jupyter 安装安装 voila,结果是这样的:

(notebook) user@server:/home/web/Jupyter$ pip3 install voila
...
Installing collected packages: jupyter-client, voila
Attempting uninstall: jupyter-client
Found existing installation: jupyter-client 7.0.3
Uninstalling jupyter-client-7.0.3:
Successfully uninstalled jupyter-client-7.0.3
Successfully installed jupyter-client-6.1.12 voila-0.2.13

换句话说:我之前已经安装了最新的jupyter-client-7.0.3;但现在我想安装 voila,由于 voila 要求,最新版本被卸载,而早期版本 6.1.12,与 voila 兼容,改为安装。

所以现在如果我想检查过时的包,我会按预期得到 jupyter-client 列表:

(notebook) user@server:/home/web/Jupyter$ pip3 list --format freeze --outdated
jupyter-client==6.1.12

... 但是,如果我运行完整的管道命令,pip3 list --format freeze --outdated |剪切-d=-f1 | xargs pip3 install --upgrade-strategy eager --upgrade,然后它将要将 jupyter-client 升级到 7.0.3,这将破坏 voila (我猜的,我不敢尝试)。

那么,是否有一个升级命令,会采取这样的情况,并在升级过程中出现这种状态时,阻止更改并给我通知?比如说:

WARNING: There is an upgrade to jupyter-client=6.1.12 (newest version 7.0.3) - however, installing that package would cause a conflict with the currently installed voila=0.2.13 package; not proceeding with this upgrade. To force this upgrade regardless, use [...]

最佳答案

由于重叠(子)依赖关系,在 python 中升级包绝非易事。有一些工具可以帮助您进行管理。在我目前的工作中,我们使用 pip-tools .在一些项目中我们使用 poetry但我不太满意它的处理方式。

对于 pip-tools,您在 requirements.in 文件中定义顶级包,然后解析子(子子)依赖项并将它们输出到 requirements.txt 文件。这样做的好处是您只需担心您的主要包。如果需要,您仍然可以升级子依赖项。

长话短说;盲目地更新所有您的包很可能永远不会按预期或预期的那样工作。软件包已升级但停止工作,或者它们可以工作但不能与另一个已更新的软件包一起使用,因为他们需要该软件包的较低版本。

我的建议是从您的主要包开始,然后使用上述工具之一从那里开始构建。对此没有 Elixir 。依赖 hell 在 Python 中是一个非常真实的东西。

关于python - pip3命令升级所有包,注意依赖冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69222860/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com