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

标签 python setuptools continuous-deployment python-wheel

假设我有一个简单的库,它使用 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 的文件.在这里很明显,wheel 忽略了 python_requires setuptools 中的选项在确定我的轮子的 Python 标签时(它应该是 py36 但默认是 py3 )。显然,我意识到我可以直接传入 --python-tag py36从命令行开始,这将完成这项工作,但我用于部署我的库的持续部署服务仅采用我正在使用的发行版的名称( bdist_wheel )。因此,我无法传递任何命令行参数。

经过一番研究,我发现我可以继承bdist_wheel类并覆盖 python_tag成员变量,但根据车轮自述文件:

It should be noted that wheel is not intended to be used as a library, and as such there is no stable, public API.



因此,我想避免继承 bdist_wheel每次发生一些重大更改时,这可能会迫使我重写我的类。

有没有其他方法可以通过 setuptools 传递轮子的 Python 标签?

最佳答案

每个 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 基本相同.
distutils相关文章文档:Writing the Setup Configuration File .

关于python - 如何使用 setuptools 将 Python 标记添加到 bdist_wheel 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52609945/

相关文章:

python - 尝试创建 Kubernetes 作业时出错

python - Django - 从 url <pk> 填充 createview 输入

python gzipped fileinput 返回二进制字符串而不是文本字符串

c++ - 在 pybind11 和 C++ 中添加源时,没有给出目标错误的源代码

python - 如何匹配整个数据框中的元素并返回该特定匹配元素的整行或索引?

python - setup.py sdist 排除子目录中的包

azure - 如何在Azure函数上的持续部署中配置连接字符串

sql-server - 将数据库更改推送到我的 SQL Azure 数据库

continuous-integration - 如何让 Travis-CI 显示构建 Artifact ?

anaconda - 当安装的包使用 conda 虚拟环境时,如何使 Python 控制台脚本入口点工作?