如何基于 pyproject.toml 构建 Python 项目。

17

我想了解Python构建系统和需求管理的当前状态。

假设我检出了使用poetry(或pipenv)的某个项目的源代码。这个项目有一个指定构建系统的pyproject.toml文件。当然,我可以查看pyproject,看到它正在使用Poetry,安装Poetry并运行poetry install,但我想避免这样做。

问题:是否有一种构建系统不可知的方法来构建Python项目?

通过“构建”,我的意思是安装所有必要的要求,以便在原地运行该项目。

使用requirements.txt,我可以通过运行pip install -r requirements.txt来实现这一点。


5
pip install .?请参阅PEP 517PEP 518 - L3viathan
我有一个坏消息要告诉你,似乎pyproject.toml不足以(至少对于setuptools)构建带有元数据的*.whl文件。由于某些原因,需要setup.cfg,并且只从pyproject.toml中提取了一些数据。完整教程:https://packaging.python.org/en/latest/tutorials/packaging-projects/ - Maciek
1个回答

15

安装该项目(及其依赖项),最新版本的pip完全能够胜任:

python -m pip install path/to/project

或者

python -m pip install --editable path/to/project

为了构建项目的分发(sdistwheel),目前我所知道的唯一一个构建后端不可知的工具是build:

python -m build

你也可以使用 pip 来构建一个wheel版本的项目(但没有sdist):

python -m pip wheel --no-deps path/to/project

关于 pyproject.toml 文件本身的内容,请参阅:


1
也许这与问题不直接相关,但是pyproject.toml应该如何格式化呢?因为我一直在尝试让它工作,但是找不到一个好的资源。 - Maarten-vd-Sande
是的,有点超出原问题的范围。不过编写 pyproject.toml 取决于构建系统,所以你的目标是哪一个(setuptools, flit, poetry等)? - sinoroc
@Maarten-vd-Sande 或许这可以帮助你:https://dev59.com/P7noa4cB1Zd3GeqPIwjC#60046331 - sinoroc
@maarten-vd-Sande 关于 pyproject.toml 的格式,请参见:https://dev59.com/TVIG5IYBdhLWcg3wkBox#64151860 - sinoroc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接