gpt4 book ai didi

python - 依赖管理 : subprocess32 needed for Python2. 7

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

我有一个依赖于 subx 的库 ( subprocess32) . subprocess32 库是 Python2.7 的反向端口,并提供超时 kwarg。

我的库需要超时 kwarg。

仅当目标平台是 Python2.x 时,我才需要 subprocess32。

我应该如何在我的项目中定义依赖关系?

如果我通过“install_requires”(setup.py)定义对 subprocess32 的依赖并且我在 python3 virtualenv 中,我会收到此错误消息:

===> pip install -e git+https://github.com/guettli/subx.git#egg=subx
Obtaining subx from git+https://github.com/guettli/subx.git#egg=subx
Cloning https://github.com/guettli/subx.git to ./src/subx
Collecting subprocess32 (from subx)
Using cached subprocess32-3.2.7.tar.gz
Complete output from command python setup.py egg_info:
This backport is for Python 2.x only.

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-lju3nl1y/subprocess32/

最佳答案

有一种声明方式,但据我所知,它需要或多或少最新版本的 setuptools(如果我没看错 release notes,您至少需要 20.2 版本)。您将在下面看到的称为环境标记,在 PEP 508 中指定。 ,通读它以获得可用标记的完整列表,并根据需要更好地理解标记语法。

对于 python 版本,让我们以您的包为例:您有 subprocess32 依赖项,应该安装在 python2.X 环境中。像这样增强你的依赖性:

install_requires=[
'subprocess32; python_version<"3"',
]

使用 python2.7 安装包 subx 现在产生:

Processing ./dist/subx-2017.8.0-py2-none-any.whl
Collecting subprocess32; python_version < "3" (from subx==2017.8.0)
Installing collected packages: subprocess32, subx
Successfully installed subprocess32-3.2.7 subx-2017.8.0

如果您使用 python3.X 安装它,输出将是:

Processing ./dist/subx-2017.8.0-py3-none-any.whl
Installing collected packages: subx
Successfully installed subx-2017.8.0

请注意 subprocess32 的安装将被跳过。


另一个常见示例是声明特定于平台的依赖项:我有一个项目需要在 Linux 上安装 auditwheel 并在 MacOS 上安装 delocate。我这样声明依赖关系:

install_requires=[
...
'auditwheel==1.7.0; "linux" in sys_platform',
'delocate==0.7.1; "darwin" == sys_platform',
]

请注意,如果您没有专门针对任何主要的 python 版本,则需要对 Linux 进行此检查,因为:

$ python2 -c "import sys; print sys.platform"
linux2

但是

$ python3 -c "import sys; print sys.platform"
linux

例如,如果您的包只适用于 python2.X,您可以使用检查 "linux2"== sys.platform。这将使您的依赖项只能通过 python2.X 安装。

关于python - 依赖管理 : subprocess32 needed for Python2. 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47098185/

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