Py学习  »  Python

如何使用setuptools将python标记添加到bdist_wheel命令?

Arnav Borborah • 6 年前 • 1695 次点击  

假设我有一个简单的图书馆 setuptools 用于包装和分发。在这种情况下,库还需要python 3.6的最低版本,这意味着我的setup.py将如下所示:

from setuptools import setup, find_packages

setup(
    name='something',
    version='0.0.1',

    description='description',
    long_description=long_description,

    # More metadata

    packages=find_packages(exclude=['tests', 'docs']),

    python_requires='>=3.6'
)

现在,当我奔跑 python setup.py bdist_wheel ,我得到一个名为 something-0.0.1-py3-none-any.whl . 很明显,轮子忽略了 python_requires 选择权 setuptools 在为我的轮子确定python标记时(应该是 py36 但是违约了吗 py3 )很明显,我意识到我可以通过 --python-tag py36 从命令行(这将完成该任务),但我用于部署库的连续部署服务仅以我正在使用的分发的名称命名。( bdist_wheel )因此,我不能传递任何命令行参数。

经过一番研究,我发现我可以继承 双锥齿轮 类并重写 python_tag 成员变量,但根据车轮自述文件:

应该注意的是,车轮 旨在用作库,因此没有稳定的公共API。

因此,我希望避免继承 双锥齿轮 类,这可能会迫使我在每次发生中断更改时重写类。

有没有其他方法可以通过SETUPTOOLS让我通过一个轮子的python标签?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30394
 
1695 次点击  
文章 [ 2 ]  |  最新文章 6 年前
AKX
Reply   •   1 楼
AKX    6 年前

你可以入侵类似的东西

if 'bdist_wheel' in sys.argv:
    if not any(arg.startswith('--python-tag') for arg in sys.argv):
        sys.argv.extend(['--python-tag', 'py36'])

但它也很脆弱…

hoefling
Reply   •   2 楼
hoefling    6 年前

每个命令行参数 distutils 命令可以保存在安装配置文件中。创建名为的文件 setup.cfg 在同一个目录中 setup.py 驻留并存储自定义 bdist_wheel 其中的配置:

# setup.cfg
[bdist_wheel]
python-tag=py36

现在运行 python setup.py bdist_wheel 基本上与跑步相同 python setup.py bdist_wheel --python-tag py36 .

中的相关文章 迪斯妥尔 文档: Writing the Setup Configuration File .