pyprojecttthon库构建的pyprojectt.toml
时间:2025-06-24 00:52:51 来源:新华社
【字体:  

pyproject.toml。配置文件,用于定义 Python 项目构建系统及相关元数据。它是 Python 为了解决项目建设和依赖管理问题,社区引入了一种标准化的方法,最初由 PEP 518 提出。pyproject.toml。#xff00文件被广泛使用c;特别是在建筑工具(中;如。 Poetry。和。 Flit。)中,用于替代传统 。setup.cfg。文件。

主要用途。

  1. 构建系统的定义。

    • pyproject.toml。构建工具及其版本可在文件中指定,如。 setuptools。或。 poetry。,以及这些工具所需的依赖项。这使得项目的建设环境更加可控和可重复。
  2. 项目元数据。

    • 包括项目名称、版本、描述、作者、许可证等信息,可以在。 pyproject.toml。文件中的定义。构建工具或包管理工具可以读取和使用这些信息。
  3. 依赖管理。

    • 该文件可以管理项目的依赖性,包括运行依赖、开发依赖等。c;类似于。 requirements.txt。,但更结构化、更灵活。
  4. 配置施工工具的行为。

    • 对于不同的施工工具,如。 setuptools。、。poetry。、。black。、。isort。等,可以在。 pyproject.toml。配置其行为。

文件结构。

典型的。 pyproject.toml。文件由几个部分组成,不同的功能和配置信息对应于每个部分。以下是LlamaFactory示例:

[build-system]requires = ["setuptools>=61.0"]build-backend = "setuptools.build_meta"[tool.ruff]target-version = "py38"line-length = 119indent-width = 4[tool.ruff.lint]ignore = ["C408", "C901", "E501", "E731", "E741", "W605"]select = ["C", "E", "F", "I", "W"][tool.ruff.lint.isort]lines-after-imports = 2known-first-party = ["llamafactory"]known-third-party = [    "accelerate",    "datasets",    "gradio",    "numpy",    "peft",    "torch",    "transformers",    "trl"][tool.ruff.format]quote-style = "double"indent-style = "space"docstring-code-format = trueskip-magic-trailing-comma = falseline-ending = "auto"

这个。 pyproject.toml。pyproject.toml。 该文件配备了项目的构建系统和使用。ruff。

代码检查和格式化相关设置。以下是各部分的详细说明: 1.。

  • [build-system]。requires。 : 指定项目建设系统依赖项目。需要在这里使用。setuptools。 版本 61.0 或者更高的版本。这意味着在建设这个项目时,Python 必须在环境中安装。setuptools。

  • ,而且版本不低于 61.0。build-backend。 : 为建设项目指定后端工具,这里用的是。setuptools.build_meta。 。这意味着。setuptools。

作为构造过程的核心工具。 2.。

  • [tool.ruff]。target-version。: 指定代码的目标 Python 版本,这里是 Python 3.8 (。py38。)。ruff。

  • 将根据此版本进行相应的检查和优化。line-length。

  • : 指定代码行的最大长度,超过此长度将被视为格式错误。这里设置为 119 个字符。indent-width。

: 指定代码缩进的宽度,这里设置为 4 个空格。 3.。

  • [tool.ruff.lint]。ignore。

  • : 指定了一些要忽略的规则或错误代码。代码检查时不会触发列出的错误代码。select。

: 指定要检查的错误或警告类别。只有这些类别的检查才会启用。 4.。

  • [tool.ruff.lint.isort]。lines-after-imports。

  • : 指定导入句子后应保留的空行数,这里设置为 2 行。known-first-party。 : 列出了项目中的第一个模块,即。llamafactory。

  • ,在导入排序中识别项目内部的模块。known-third-party。

: 列出已知的第三方库,当导入排序时,这些库将与其他模块区分开来。 5.。

  • [tool.ruff.format]。quote-style。 : 使用指定字符串的引号样式,设置在这里。double。

  • ,即双引号。indent-style。 : 指定缩进风格󿀌这里使用。space。 (空格)而非。tab。

  • docstring-code-format。 : 设置为。true。

  • ,表示文档字符串(docstring)代码格式化规则也将应用于中间。skip-magic-trailing-comma。 : 设置为。false。

  • ,这意味着即使添加了魔术尾逗号(magic trailing comma),也不会跳过格式化。line-ending。 : 设置为。auto。

,根据操作系统的默认设置,自动选择行结尾符。

小结。 这个。pyproject.toml。 文件主要配置项目建设系统,并且定义得很详细。ruff。

该工具用于代码风格检查和格式化规则。这些设置有助于确保代码的一致性和质量,减少错误󿀌并遵循团队的编码规范。

工作流程。 在执行。pip install .。时,pyproject.toml。

构建和安装文件 Python 在项目过程中引用。具体流程如下: 1.。 识别。pyproject.toml。

  • 文件。 在项目的根目录中执行。pip install .。࿰命令时c;pip。 将首先检查目录下是否存在。pyproject.toml。
  • 文件。如果有这个文件,pip。

将其视为项目的建设配置文件,并且根据其中的内容来指导下一个施工过程。 2.。 解析。build-system。

  • 部分。pip。 首先读取。pyproject.toml。 文件中的。[build-system]。
    • 部分。这部分定义了建设项目所需的依赖项和建设后端(即构建工具)。requires。 : 列出了本项目建设所需的内容 Python 包。在执行。pip install .。时,pip。确保这些袋子已安装好。如果这些包没有安装,pip。
    • 这些依赖性将首先安装。build-backend。 : 指定建设项目使用的后端工具,比如。setuptools.build_meta。 或。poetry.core.masonry.api。pip。

该工具将用于建设项目。 3.。

  • 构建源分发包(SDist)和/或轮子包(Wheel) 一旦。pip。
    • 安装施工所需的依赖性,并加载施工后端,构建后端将被调用来生成源分发包装#xff08;SDist)和/或轮子包(Wheel)。 如果使用。setuptools.build_meta。 ,它将读取项目的目的。setup.py。 或。setup.cfg。
    • 文件指导包的构建。

这些建筑输出将保存在临时目录中,用于下一步的安装步骤。 4.。

  • 安装项目。pip。
  • 使用生成的包(SDist 或 Wheel)安装项目到目标环境(通常是当前 Python 环境)。如果项目依赖于其他包󿀌pip。 会从。pyproject.toml。 或。setup.py。 中的。install_requires。

这些依赖性被识别并安装在列表中。 5.。

  • 其它工具配置。pyproject.toml。 其他部分,如。[tool.ruff]。 ,在施工或开发过程中,可能会引用相应的工具。虽然这些部分不会直接影响。pip install .。

过程,但是它们在发展环境中仍然很重要。

  1. 简化执行流程。pip。 检查并加载。pyproject.toml。
  2. 文件。 解析。build-system。
  3. ,安装施工所需的依赖。
  4. 使用指定的后端建设项目(生成 SDist 和/或 Wheel)。

安装生成的包及其依赖性。

总结。pyproject.toml。 文件在。pip install .。 在这个过程中会被接受。pip。引用,确定如何构建和安装工程。pip。 主要用于其中。[build-system]。

部分加载施工工具和依赖,然后调用这些工具生成项目的分发包,并最终将其安装在当前的环境中。

[责任编辑:百度一下]
检察日报数字报 | 正义网 |
Copyrights©最高人民检察院 All Rights Reserved.