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 次 |
最近记录: |