根据实现在setup.py脚本中指定其他依赖项(PyPy / CPython支持)

时间:2018-11-07 13:04:49

标签: python setup.py cpython pypy

前言

我有一个支持PyPy的程序包,对于CPython用户,它具有mypy作为附加依赖项,我将其指定为

import platform

from setuptools import setup
...
install_requires = [...]
if platform.python_implementation() != 'PyPy':
    install_requires.append('mypy>=0.630')
setup(...,
      install_requires=install_requires)

在本地工作正常,但是当我通过CPython这样创建source distribution

> python setup.py sdist

并尝试通过PyPy安装它

> pypy3 -m pip install path/to/package.tar.gz

它尝试安装mypy(并且由于mypy使用CPython特定的软件包而失败),因此看起来CPython版本(为其创建了发行​​版)采用了依赖项。

问题

我该如何指定依赖关系并创建一次源代码分发,以便它同时适用于CPython和PyPy版本(然后上传到PyPI)?

1 个答案:

答案 0 :(得分:1)

您当前的脚本在构建时而不是在安装时测试平台。

您需要使用的不是my_enum_class模块,而是PEP 508中定义的环境标记

platform

参考文献: