问题
我的代码依赖于两个包A
和B
.
最近我发现了一个包兼容性问题:包的维护者A
停止发布 32 位 Python 的 whl 包,同时包的维护者删除了包所依赖的B
一些功能。A
由于 packageA
依赖于 package 中的某些功能B
,因此代码在运行时会失败。当使用 64 位 Python 时,问题就消失了 - 所有包都很好地同步。
当然我可以手动抑制 package 的较高版本B
,但对于 64 位版本没有意义。最好使用 64 位 Python 的最新版本。然而,有必要让 Python 32 位也能顺利运行,并且使用较旧的软件包版本,我可以自己定义这些版本。
问题
我想知道是否有机会为不同的位版本指定不同的软件包要求。
目前setup.py
我们有install_requires
字段,但这是通用的而不是特定于位的。
额外信息
摘自setup.py
:
install_requires=[
'A',
'B',
]
Run Code Online (Sandbox Code Playgroud)
我在开发环境中安装我的包:
$ pip install -e .
Run Code Online (Sandbox Code Playgroud)
更新
我可能应该明确提到,在这里我想区分不同的 Python 位版本(32 位与 64 位)而不是操作系统架构。
我设法想出的唯一解决方案是:
is_32_bit = sys.maxsize <= 2**32 …
Run Code Online (Sandbox Code Playgroud)