gpt4 book ai didi

python - 设置.py & pip : override one of the dependency's sub-dependency from requirements. txt

转载 作者:太空狗 更新时间:2023-10-29 18:09:25 25 4
gpt4 key购买 nike

我目前正在开发一个包,在我的 requirements.txt 中,我有一个依赖项:wikipedia。现在,wikipedia 1.3 使用 requests-2.2.1 而我的包使用版本 2.3.0。

此外,正如人们所预料的那样,wikipedia-1.3 的安装取决于它是否存在依赖项。

但是,如果我启动一个新的 virtualenv 并直接将 wikipedia 包含在我的 requirements.txt 中,它会在 上给出一个 ImportError requests 因为在 setup.py 运行时,requests-2.3.0setup.py 不会执行,除非所有其他人执行。在下面的附图中,解压后没有运行setup.py requests

request getting installed but not running setup.py simultaneously

由于某些奇怪的原因,wikipediasetup.py 包含 import wikipedia,它在它们甚至之前导入它的依赖项安装;但是它通过了 CI 测试,因为它通过 pip 单独安装需求,然后运行 ​​setup.py

为了克服这种情况,我制作了一个安装脚本,包括:

pip install -r requirements.txt
pip install wikipedia
pip install -e .
  • 这会安装 requests-2.3.0beautifulsoup4
  • 然后安装 wikipedia(然后可以运行 setup.py 并安装 wikipediarequests-2.2.1)
  • 然后“pip install -e”。选项会再次安装我的包和 requests-2.3.0

因此 requests-2.3.0 首先被安装,然后被旧版本 2.2.1 取代,然后再次被 2.3.0 取代。

我尝试通过各种规范来解决这个问题,但这些规范令人困惑。我该如何解决这个问题?

最佳答案

正如 Martijn 所指出的,正确的方法是在项目中指定一个最低版本,假设子依赖项的 future 版本中保留了完全兼容性。

如果您无法更改需求文件,您可以下载项目并在本地编辑需求文件以指定您想要的任何版本。这可以通过 pip download 命令完成:

pip download wikipedia==1.3

此外,如果您想在整个过程中使用 pip 并保留 requests==2.3.0 而无需删除并重新安装,您可以指定一个 约束 文件。这可以通过以下方式完成:

pip install -c constraints.txt wikipedia==1.3

其中 constraints.txt 包含如下内容:

requests>=2.3.0
beautifulsoup4

这将产生一个警告,但 wikipedia 包将被安装:

wikipedia 1.3.0 has requirement requests==2.2.1, but you'll have requests 2.3.0 which is incompatible.
Installing collected packages: wikipedia
Successfully installed wikipedia-1.3.0

现在,如果您真的知道自己在做什么(或者只是想尝试它是否有效),您可以使用 --no-deps 标志,这将完全忽略包依赖性并且不会产生上面的警告:

pip install --no-deps -c constraints.txt wikipedia==1.3

在这两种情况下,pip freeze 显示:

beautifulsoup4==4.6.0
bs4==0.0.1
requests==2.3.0
wikipedia==1.3.0

注意:这是使用 pip 10.0.1 测试的,但它应该适用于任何最新的 pip 版本。

关于python - 设置.py & pip : override one of the dependency's sub-dependency from requirements. txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969793/

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