python - 如何使用 setuptools 将 Python 标记添加到 bdist_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 标记时忽略了python_requires
选项(它应该是但是默认的)。显然,我意识到我可以从命令行传入,这将完成这项工作,但我用于部署我的库的持续部署服务只接受我正在使用的发行版的名称 ( )。因此,我无法传递任何命令行参数。setuptools
py36
py3
--python-tag py36
bdist_wheel
经过一番研究,我发现我可以从bdist_wheel
类继承并覆盖python_tag
成员变量,但是根据轮子README:
应该注意的是,wheel不打算用作库,因此没有稳定的公共 API。
正因为如此,我想避免从bdist_wheel
类继承,这可能会迫使我在每次发生重大变化时重写我的类。
是否有任何通过 setuptools 的替代方法允许我传入 Python 标记以获取轮子?
解决方案
每个命令的每个命令行参数都distutils
可以保存在设置配置文件中。在您所在setup.cfg
的同一目录中创建一个名为的文件,并将自定义配置存储在其中:setup.py
bdist_wheel
# setup.cfg
[bdist_wheel]
python-tag=py36
现在 runningpython setup.py bdist_wheel
将与 running 基本相同python setup.py bdist_wheel --python-tag py36
。
文档中的相关文章distutils
:编写设置配置文件。
推荐阅读
- excel - 根据某些行的选择调整excel列宽
- python - 如何最小化与给定输入分布的距离?
- java - 如何找到大整数数组列表的最小和最大元素?
- apache-spark - forEachPartition 有效,但 mapPartition 无效
- javascript - 动态检查 json 属性
- javascript - JavaScript/JQuery Div 延迟函数
- typescript - 如何强制泛型
- neural-network - 为什么第一个 Dense 层的尺寸不必等于 CNN 中 Flatten() 的尺寸?
- java - 等到在 Java 中创建文件
- python - 删除键/值对字符串中字符串的“键”部分中的引号