np8*_*np8 55 python packaging pip pyproject.toml
我正要尝试从 GitHub 下载的 Python 包,发现它没有 . setup.py,所以我无法安装它
pip install -e <folder>
Run Code Online (Sandbox Code Playgroud)
相反,该包有一个pyproject.toml文件,该文件似乎与setup.py通常的条目非常相似。
谷歌搜索引导我进入PEP-518,它setup.py在基本原理部分给出了一些批评。但是,它没有明确说明setup.py应该避免使用 ,或者pyproject.toml完全取代setup.py.
是pyproject.toml用来代替的东西setup.py吗?或者一个包应该同时带有 apyproject.toml和 a setup.py?
如何安装pyproject.toml处于可编辑状态的项目?
pce*_*pce 29
是的,pyproject.toml是PEP 518的指定文件格式,其中包含 Python 项目的构建系统要求。
这解决了构建工具的依赖性鸡和蛋的问题,即pip可以读取pyproject.toml和什么版本setuptools或者wheel一个可能需要。
如果您需要一个setup.py可编辑的安装,您可以在setup.py以下位置使用垫片:
#!/usr/bin/env python
import setuptools
if __name__ == "__main__":
setuptools.setup()
Run Code Online (Sandbox Code Playgroud)
Cee*_*man 26
pyproject.toml是新的统一 Python 项目设置文件,用于替换setup.py.
可编辑安装仍然需要setup.py:import setuptools; setuptools.setup()
要使用pyproject.toml,运行python -m pip install .
然后,如果项目使用的是poetry而不是pip,您可以%USERPROFILE%\AppData\Local\pypoetry\Cache\virtualenvs像这样安装依赖项(到):
poetry install
Run Code Online (Sandbox Code Playgroud)
poetry run pytest tests/
Run Code Online (Sandbox Code Playgroud)
并预提交(使用.pre-commit-config.yaml):
poetry run pre-commit install
poetry run pre-commit run --all-files
Run Code Online (Sandbox Code Playgroud)
Gre*_*cki 20
仅回答这部分,其余部分已由其他人很好地解释了:
pyproject.toml如何安装处于可编辑状态的项目?
自 2022 年 2 月发布诗歌核心 v1.0.8 以来,您可以执行以下操作:
a) 您需要在您的pyproject.toml:
[build-system]
requires = ["poetry-core>=1.0.8"]
build-backend = "poetry.core.masonry.api"
Run Code Online (Sandbox Code Playgroud)
b)运行:
pip install -e .
Run Code Online (Sandbox Code Playgroud)
Evg*_*423 13
目前有多种打包工具在 Python 社区中很流行,虽然setuptools似乎仍然很流行,但它不再是事实上的标准。这种情况给最终用户和开发人员带来了许多麻烦:
setuptools从源代码基于包的安装/分配的构建可能会失败,如果一个人没有setuptools安装;pip. 必须先安装打包工具,然后使用特定于工具的命令来安装/构建分发包;pyproject.toml是PEP 517和PEP 518引入的新配置文件,用于解决这些问题:
...想想为项目生成构建工件所需的(粗略)步骤:
- 项目的源代码检出。
- 安装构建系统。
- 执行构建系统。
此 PEP [518] 涵盖步骤 #2。PEP 517涵盖了第 3 步......
任何工具也可以使用自己的部分(表)扩展此文件以接受特定于工具的选项,但这取决于他们而不是必需的。
For setuptools-based 包pyproject.toml并不是严格意义上的替换setup.py,而是在仍然需要时确保其正确执行。对于其他打包工具——是的,它是:
如果
build-backend键存在,则优先,源树遵循指定后端的格式和约定(因此不需要setup.py,除非后端需要)。项目可能仍希望包含setup.py与不使用此规范的工具的兼容性。
“可编辑安装”是一个setuptools特定的功能,因此PEP 517不支持它:
Install Options:
-e, --editable <path/url> Install a project in editable mode (i.e. setuptools "develop mode")
Run Code Online (Sandbox Code Playgroud)
要setuptools以可编辑模式安装-based 包,它需要有一个setup.py至少包含最少内容的文件:
from setuptools import setup
setup()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21203 次 |
| 最近记录: |