代码之家  ›  专栏  ›  技术社区  ›  Arnav Borborah

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

  •  1
  • Arnav Borborah  · 技术社区  · 7 年前

    假设我有一个简单的图书馆 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标签?

    2 回复  |  直到 7 年前
        1
  •  3
  •   hoefling    7 年前

    每个命令行参数 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 .

        2
  •  0
  •   AKX Bryan Oakley    7 年前

    你可以入侵类似的东西

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

    但它也很脆弱…