在 setup.py 中为不同版本的 python 指定不同版本的 lz4 包

Specifying different versions of lz4 package in setup.py for different versions of python

我正在管理一个必须在 python 27-3 和 36-1 中可用的开源库。 lz4 最近发布了 3.0.2 版本,仅 python >= 3.5 支持。目前,我没有在我的 setup.py 中列出对 lz4 的依赖,所以它一定是我的依赖之一的子依赖。

唯一的方法是强制用户(试图获得 27-3 版本,应该不多)尝试安装我的 egg,一旦它无法编译 lz4,他们可以 运行 pip install lz4==3.0.0 手动然后尝试再次安装我的 pacakage?

我知道 requirements.txt:

中有这样的东西
lz4<=3.0.0; python_version < '3.0'
lz4; python_version > '3.0'

但我尽量将所有设置说明本地化到我的 setup.py 文件中。

依赖项可以在 setup.py 中声明,而不仅仅是在 requirements.txt 中声明。在 setup.py 中使用 install_requires:

setup(
    …
    install_requires = [
        "lz4<=3.0.0; python_version < '3.0'",
        "lz4; python_version > '3.0'",
    ]
    …
)

一些现实世界的例子:SQLObject, sqlconvert