当setup.py运行在Python第3版解释器上时,我如何构建一个py2轮包?

2022-05-27 00:00:00 python setuptools packaging python-wheel

问题描述

我有一个包,它应该只是Python版本2,但需要运行版本3解释器来生成。

此包的setup.py看起来有点像Hits:

from setuptools import setup

setup(
    python_requires="<3.0, >=2.7.5",
    classifiers=[
        'Programming Language :: Python :: 2',
        'Intended Audience :: Developers',
    ],
    # ... more keyword arguments ... 
 )

如果我调用python2 setup.py build bdist_wheel,我会得到:

$ ls dist
mypackage-0.3.dev14-py2-none-any.whl

如果我使用版本3解释器运行它,即python3 setup.py build bdist_wheel,我会得到:

$ ls dist
mypackage-0.3.dev14-py3-none-any.whl

我本以为无论解释器版本如何,我都会得到一个py2包,因为我用python_requires(以及在标记中)指定了它。我的包构建服务器只有一个Python3解释器。

在使用Python3解释器运行setupTools时,如何构建面向Python2的控制盘?这有可能吗?文件名中的-py3-/-py2的含义是否与我认为的不同?


解决方案

尝试将python-tag参数传递给bdist_车轮:

python setup.py bdist_wheel --python-tag=py2

也可以作为

传递
from setuptools import setup
setup(options={'bdist_wheel':{'python_tag':'py2'}})

setup.cfg

相关文章