如何使用 pyproject.toml 构建万向轮

pla*_*pus 12 python pip setuptools python-wheel pyproject.toml

这是项目目录结构

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 meow.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\n0 directories, 2 files\n
Run Code Online (Sandbox Code Playgroud)\n

这是meow.py

\n
def main():\n    print("meow world")\n
Run Code Online (Sandbox Code Playgroud)\n

这是pyproject.toml

\n
[build-system]\nrequires = ["setuptools"]\nbuild-backend = "setuptools.build_meta"\n\n[project]\nname = "meowpkg"\nversion = "0.1"\ndescription = "a package that meows"\n\n[project.scripts]\nmeow_world = "meow:main"\n
Run Code Online (Sandbox Code Playgroud)\n

构建此包时,无论是使用python3 -m pip wheel .还是使用python3 -m build,都会创建一个名为 like 的文件meowpkg-0.1-py3-none-any.whl,该文件无法安装在 Python 2 上。

\n
$ python2.7 -m pip install meowpkg-0.1-py3-none-any.whl\nERROR: meowpkg-0.1-py3-none-any.whl is not a supported wheel on this platform.\n
Run Code Online (Sandbox Code Playgroud)\n

但“meowpkg”实际上也适用于 Python 2。如何指示 setuptools 和/或 Wheel 创建一个标记为 的万能轮meowpkg-0.1-py2.py3-none-any.whl,而不使用旧的setup.cfg/setup.py方式?

\n

目前的解决方法:

\n
echo "[bdist_wheel]\\nuniversal=1" > setup.cfg && python3 -m build && rm setup.cfg\n
Run Code Online (Sandbox Code Playgroud)\n

pla*_*pus 14

将此部分添加到pyproject.toml

[tool.distutils.bdist_wheel]
universal = true
Run Code Online (Sandbox Code Playgroud)