当前位置: 首页 > 知识库问答 >
问题:

pyproject.toml 文件有什么用?

薛高澹
2023-03-14

我正要尝试从GitHub下载的Python包,意识到它没有setup.py,所以我不能用

pip install -e <folder>

相反,这个包有一个< code>pyproject.toml文件,它似乎与< code>setup.py通常具有的条目非常相似。

Google引导我进入PEP-518,它在Rationale部分对setup.py进行了一些批评。然而,它没有明确说明应该避免使用setup.py,或者pyproject.toml将因此完全取代setup.py

pyproject.toml是用来替换setup.py的东西吗?或者一个包应该同时带有pyproject.tomlsetup.py
如何安装处于可编辑状态的pyproject.toml的项目?

共有3个答案

益清野
2023-03-14

目前有多种打包工具在Python社区中很流行,虽然setuptools似乎仍然很流行,但它并不流行

  1. 对于<code>setuptools</code>,如果没有安装<code>设置工具</code>,则从发行版的源代码/内部版本安装基于软件包可能会失败
  2. pip不支持基于源代码中的其他打包工具安装包,因此这些工具必须生成设置。py</code>文件生成兼容的包。要构建分发包,必须先安装打包工具,然后使用特定于工具的命令
  3. 如果包作者决定更改打包工具,则必须将工作流更改为

pyproject.toml是PEP引入的新配置文件

……想想为项目生成构建工件所需的(粗略)步骤:

  1. 项目的源检出。
  2. 安装构建系统。
  3. 执行构建系统。

此 PEP [518] 涵盖步骤 #2。政治人物

任何工具都可以使用自己的部分(表)扩展此文件以接受特定于工具的选项,但这取决于它们,而不是必需的。

PEP

严安志
2023-03-14

pyproject.toml是新的统一Python项目设置文件,它取代了setup.py。可编辑的安装仍然需要setup.py导入设置工具;setuptools.setup()

要使用pyproject.toml,请运行python -m pip install。

然后,如果项目使用诗歌而不是 pip,则可以像这样安装依赖项(到 %USERPROFILE%\AppData\Local\pypoetry\Cache\virtualenvs) 中:

poetry install

然后运行依赖项,如pytest:

poetry run pytest tests/

和预提交(使用.pre-commit-config.yaml):

poetry run pre-commit install
poetry run pre-commit run --all-files
涂溪叠
2023-03-14

是的,pyproject.toml 是 PEP 518 的指定文件格式,其中包含 Python 项目的构建系统要求。

这解决了构建工具依赖鸡和蛋的问题,即pip可以读取pyproject.toml以及可能需要什么版本的setup的

如果需要 setup.py 进行可编辑安装,可以在 setup.py 中使用填充程序:

#!/usr/bin/env python

import setuptools

if __name__ == "__main__":
    setuptools.setup()
 类似资料:
  • 问题内容: libtool的文件有哪些用途?它们如何与共享库一起使用? 问题答案: 它是一个文本文件,其中包含对库的描述。 它允许创建与平台无关的名称。 例如,转到: 在Linux下: 在Cygwin下: 在Windows MinGW下: 所以是由平台之间保留的唯一文件,允许以理解与发生了什么: 库依赖 实际文件名 库版本和修订 无需依赖特定平台的库实现。

  • 本文向大家介绍.npmrc配置文件有什么用途?相关面试题,主要包含被问及.npmrc配置文件有什么用途?时的应答技巧和注意事项,需要的朋友参考一下 .npmrc文件的作用,就是配置npm源。 (该文件在C盘用户文件目录下) eg.淘宝源 registry = https://registry.npm.taobao.org

  • 问题内容: 对我来说,它位于C:\ Python33 \ libs。 供参考-与C:\ Python33 \ Lib 不在 同一个文件夹-请注意大写字母和缺少’s’。 在我正在使用的一台计算机上,我只是将.py文件放到libs文件夹中,并且可以像库/模块一样导入和使用它(对不起,我不太了解术语),无论我在哪里项目正在工作的是。 但是,在尝试在另一台计算机上复制它时,此操作不起作用。尝试导入只会给出

  • 我对docker比较陌生,我想知道docker-compose.yml文件和简单的docker文件有什么基本区别。

  • 问题内容: 当Maven生成JAR文件时,它将模块的POM文件放在内部(似乎在目录 / 中)。 当我从Ant构建一个JAR文件以通过Maven Ant任务进行部署时,此POM文件(JAR内部的一个)的存在重要吗?它似乎没有,但是我只是想确保它没有在任何地方使用,并确认它应该在JAR文件中的确切位置。 问题答案: 在和文件打包在JAR以便由Maven的生产的每个工件是自描述的,也可以让你在使用自己的

  • 个人文件仅限用户自己使用,其他人没有权限查看及操作; 共享文件由团队集体管理,管理员可增减成员,权限默认为查看、下载、在线编辑、分享。