找回密码
 会员注册
查看: 11|回复: 0

python库构建之pyproject.toml

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
72245
发表于 2024-9-7 20:25:17 | 显示全部楼层 |阅读模式
pyproject.toml是一个配置文件,用于定义Python项目的构建系统和相关的元数据。它是Python社区为了解决项目构建和依赖管理问题而引入的一种标准化方式,最初由PEP518提出。pyproject.toml文件被广泛使用,尤其是在构建工具(如Poetry和Flit)中,用来替代传统的 setup.cfg文件。主要用途定义构建系统:pyproject.toml文件中可以指定构建工具及其版本,如setuptools或poetry,以及这些工具所需的依赖项。这使得项目的构建环境更加可控和可重复。项目元数据:包括项目的名称、版本、描述、作者、许可证等信息,可以在pyproject.toml文件中定义。这些信息可以被构建工具或包管理工具读取和使用。依赖管理:该文件可以管理项目的依赖关系,包括运行时依赖、开发时依赖等,类似于requirements.txt,但更加结构化和灵活。配置构建工具的行为:对于不同的构建工具,如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文件配置了项目的构建系统以及使用ruff进行代码检查和格式化的相关设置。以下是各部分的详细解释:1.[build-system]requires:指定了项目的构建系统依赖项。这里要求使用setuptools版本61.0或更高版本。这意味着在构建这个项目时,Python环境中必须安装setuptools,且版本不低于61.0。build-backend:指定了用于构建项目的后端工具,这里使用的是setuptools.build_meta。这意味着setuptools将作为构建过程的核心工具。2.[tool.ruff]target-version:指定了代码的目标Python版本,这里是Python3.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,意味着即使添加魔术尾逗号(magictrailingcomma),也不会跳过格式化。line-ending:设置为auto,表示根据操作系统的默认设置自动选择行结尾符。小结这个pyproject.toml文件主要配置了项目的构建系统,并详细定义了ruff工具用于代码风格检查和格式化的规则。这些设置帮助确保代码的一致性和质量,减少错误,并遵循团队的编码规范。工作流程在执行pipinstall.时,pyproject.toml文件会在构建和安装Python项目的过程中被引用。具体流程如下:1.识别pyproject.toml文件当你在项目的根目录执行pipinstall.命令时,pip会首先检查该目录下是否存在pyproject.toml文件。如果存在这个文件,pip会将其视为该项目的构建配置文件,并按照其中的内容来指导接下来的构建过程。2.解析build-system部分pip首先读取pyproject.toml文件中的[build-system]部分。这一部分定义了构建项目所需的依赖项以及构建后端(即构建工具)。requires:列出了构建这个项目所需的Python包。在执行pipinstall.时,pip会确保这些包已经安装。如果这些包没有安装,pip会首先安装这些依赖。build-backend:指定构建项目所使用的后端工具,比如setuptools.build_meta或poetry.core.masonry.api。pip会调用这个工具来构建项目。3.构建源分发包(SDist)和/或轮子包(Wheel)一旦pip安装了构建所需的依赖并加载了构建后端,构建后端会被调用来生成源分发包(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],可能会被相应的工具在构建或开发过程中引用。虽然这些部分不会直接影响pipinstall.的过程,但它们在开发环境中依然重要。简化的执行流程pip检查并加载pyproject.toml文件。解析build-system,安装构建所需的依赖。使用指定的构建后端构建项目(生成SDist和/或Wheel)。安装生成的包及其依赖。总结pyproject.toml文件在pipinstall.的过程中会被pip引用,以确定如何构建和安装项目。pip主要使用其中的[build-system]部分来加载构建工具和依赖,然后调用这些工具生成项目的分发包,并最终将其安装到当前环境中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-11 06:02 , Processed in 0.445570 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表