阅读 pyproject.toml、python -m pip install、诗歌、flit 等 - 我有几个关于用 pyproject.toml 替换 setup.py 的问题。
我最大的问题是 - toml 文件如何替换 setup.py。意思是,toml 文件不能做 py 文件可以做的所有事情。读到它,poetry 和 flit 完全用 pyproject.toml 替换了 setup.py。虽然 pip 使用 pyproject.toml 来指定构建工具,但仍然使用 setup.py 进行其他所有操作。
一个很好的例子是,pip 目前没有办法直接在 toml 文件中为控制台脚本做入口点,但诗歌和 flit 可以。
- https://flit.readthedocs.io/en/latest/pyproject_toml.html#scripts-section
- https://python-poetry.org/docs/pyproject/#scripts
我现在的主要问题是;
pyproject.toml 的重点是提供构建系统要求。它是一个元数据文件。因此,仅使用此文件来指定构建系统要求并仍将 setup.py 用于其他所有内容,这不是理想的解决方案。
我很困惑,因为我觉得我们在解决一个相当简单的问题时损失了很多。通过完全使用 setup.py 并用 pyproject.toml 替换它,我们失去了很多我们可以在 setup.py 中做的有用的事情。我们不能使用 a __version.py__
,并且我们失去了自动创建通用轮子和 sdist 并使用 Twine 将我们的包上传到 PyPi 的能力。我们目前可以在 setup.py 文件中执行此操作。
我只是有时间思考为什么我们想用仅元数据的文件完全替换 setup.py。似乎将它们一起使用是两全其美的。我们解决了先有鸡还是先有蛋的构建系统问题,并且保留了 setup.py 可以做的许多有用的事情。
无论如何,我们不需要 setup.py 在开发模式下安装吗?或者也许这只是一个点子问题?