具有以下封装结构
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── setup.py
内容 setup.py
from setuptools import setup
setup()
内容 setup.cfg
[metadata]
name = my_package
version = 0.1
[options]
packages = find:
我可以my_package
像这样构建轮子或源代码分布
pip wheel --no-deps -w dist .
# generates file ./dist/my_package-0.1-py3-none-any.whl
python setup.py sdist
# generates file ./dist/my_package-0.1.tar.gz
但是据setuptools的维护者说,声明式构建配置是理想的选择,而使用命令式构建将成为代码的味道。因此,我们替换setup.py
为pyproject.toml
:
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── pyproject.toml
内容 pyproject.toml
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel"]
而且您仍然可以像以前一样制造轮子,它可以工作。但是sdist不起作用:
python: can't open file 'setup.py': [Errno 2] No such file or directory
那么,您实际上应该如何构建.tar.gz文件 使用setuptools?什么是创建sdist的面向用户工具?我不想更改构建后端。看起来其他打包工具都编写了自己的构建入口点,但是我认为在元数据中定义声明性构建系统的全部目的是,您不必动手构建系统,而是学习每种方法不同的打包工具期望被调用,或者必须进入解释器并手动调用Python API。但是构建系统要求的PEP已有2年以上的历史了。我在这里错过明显的东西吗?
如何在不使用setup.py
文件的情况下构建源代码分发?
pep517.build
在有诸如flit,诗歌,孵化之类的生产工具,甚至可能还有更多工具的情况下,只关注实验只是一个临时的拐杖?