从 setup.py 构建万向轮
Build a universal wheel from setup.py
如何从 setup.py
构建万向轮?我不希望每次都传递 --universal
选项,或者只为这个选项创建一个 setup.cfg
文件。
我知道 中的解决方法,但是是否有一种干净的方法可以在不临时创建 setup.cfg
文件的情况下执行此操作?
您可以使用 script_args
选项到 setup()
来覆盖命令行。所以你可以这样做:
import sys
from setuptools import setup
setup(script_args=sys.argv[1:]+['--universal'])
这不是特别优雅,但可能比创建一个临时文件更不难看 setup.cfg
setup.py 的 setup()
支持 options
参数来将选项传递给任何命令。它是命令名称和命令选项的字典。您可以通过提供 strtobool 例如
接受的任何真值来指示它构建万向轮
setup(options={'bdist_wheel':{'universal':'1'}})
或
setup(options={'bdist_wheel':{'universal':True}})
另见 https://github.com/python/cpython/blob/master/Lib/distutils/dist.py#L247
如果您只想制作一个 Python 3 兼容轮,则无需传递任何参数。如果轮子是在 Python 3 解释器中构建的,它将自动被标记为 py3。
如何从 setup.py
构建万向轮?我不希望每次都传递 --universal
选项,或者只为这个选项创建一个 setup.cfg
文件。
我知道 setup.cfg
文件的情况下执行此操作?
您可以使用 script_args
选项到 setup()
来覆盖命令行。所以你可以这样做:
import sys
from setuptools import setup
setup(script_args=sys.argv[1:]+['--universal'])
这不是特别优雅,但可能比创建一个临时文件更不难看 setup.cfg
setup.py 的 setup()
支持 options
参数来将选项传递给任何命令。它是命令名称和命令选项的字典。您可以通过提供 strtobool 例如
setup(options={'bdist_wheel':{'universal':'1'}})
或
setup(options={'bdist_wheel':{'universal':True}})
另见 https://github.com/python/cpython/blob/master/Lib/distutils/dist.py#L247
如果您只想制作一个 Python 3 兼容轮,则无需传递任何参数。如果轮子是在 Python 3 解释器中构建的,它将自动被标记为 py3。