python利器pyproject.toml詳解
pyproject.toml文件概述
pyproject.toml是Python項(xiàng)目的標(biāo)準(zhǔn)配置文件,基于TOML(Tom’s Obvious, Minimal Language)格式。它統(tǒng)一了項(xiàng)目元數(shù)據(jù)、依賴聲明、構(gòu)建配置和工具設(shè)置。
文件結(jié)構(gòu)概覽



pyproject.toml 是 Python 項(xiàng)目的核心配置文件,用于統(tǒng)一管理項(xiàng)目構(gòu)建、依賴和元數(shù)據(jù)。它遵循 TOML 格式,由 PEP 518、PEP 517 和 PEP 621 等標(biāo)準(zhǔn)推動(dòng),已成為現(xiàn)代 Python 項(xiàng)目的標(biāo)準(zhǔn)配置文件。其主要作用如下:
??? ??1. 構(gòu)建系統(tǒng)配置??
定義項(xiàng)目構(gòu)建所需的工具和后端,替代傳統(tǒng)的 setup.py:
[build-system] requires = ["setuptools>=42", "wheel"] # 構(gòu)建依賴 build-backend = "setuptools.build_meta" # 構(gòu)建工具入口
- ??作用??:確保構(gòu)建環(huán)境的一致性,指定構(gòu)建工具(如
setuptools、poetry、flit)及其版本。
?? ??2. 項(xiàng)目元數(shù)據(jù)管理??
集中定義項(xiàng)目基本信息:
[project]
name = "my_project"
version = "0.1.0"
authors = [{ name = "Your Name", email = "your.email@example.com" }]
license = { text = "MIT" }
requires-python = ">=3.7" # 指定兼容的Python版本- ??包含內(nèi)容??:項(xiàng)目名稱、版本、作者、許可證、Python 版本要求等。
?? ??3. 依賴管理??
統(tǒng)一管理運(yùn)行時(shí)依賴和分組依賴,替代 requirements.txt:
[project]
dependencies = [ # 主依賴
"requests>=2.25.1",
"numpy>=1.19.0"
]
[project.optional-dependencies] # 分組依賴
dev = ["pytest", "black"] # 開發(fā)環(huán)境依賴
test = ["pytest-cov"] # 測(cè)試環(huán)境依賴- ??安裝方式??:通過
pip install .[dev]安裝分組依賴。
?? ??4. 工具行為配置??
為代碼檢查、格式化等工具提供統(tǒng)一配置:
[tool.ruff] line-length = 119 # 代碼行長(zhǎng)度限制 ignore = ["C408", "E501"] # 忽略的檢查規(guī)則 [tool.black] skip-magic-trailing-comma = false # 代碼格式化規(guī)則
- ??支持工具??:
black(格式化)、ruff(代碼檢查)、pytest(測(cè)試)等。
?? ??5. 入口點(diǎn)與發(fā)布配置??
定義命令行腳本和發(fā)布信息:
[project.scripts] my_script = "my_project.main:main" # 命令行入口 [project.urls] Homepage = "https://github.com/your/project" # 發(fā)布到PyPI的鏈接
- ??作用??:創(chuàng)建自定義命令,簡(jiǎn)化項(xiàng)目發(fā)布流程。
?? ??6. 解決傳統(tǒng)配置問題??
- ??替代分散配置??:整合
setup.py、requirements.txt、.pylintrc等多文件配置,提升項(xiàng)目結(jié)構(gòu)清晰度。 - ??標(biāo)準(zhǔn)化構(gòu)建流程??:通過 PEP 517/518 規(guī)范構(gòu)建后端接口,確保跨環(huán)境一致性。
?? ??如何生成pyproject.toml???
使用工具(如 PDM、Poetry)自動(dòng)生成:
pip install pdm # 安裝PDM pdm init # 交互式生成配置文件
- ??優(yōu)勢(shì)??:避免手動(dòng)編寫錯(cuò)誤,快速集成現(xiàn)代 Python 工具鏈。
?? ??總結(jié)??
pyproject.toml 是 Python 項(xiàng)目管理的??核心樞紐??,通過??統(tǒng)一配置??解決傳統(tǒng)方案的碎片化問題,提升構(gòu)建可靠性、依賴管理靈活性和工具鏈集成度?,F(xiàn)代工具如 Poetry、Flit 和 PDM 已全面支持該文件,使其成為 Python 開發(fā)生態(tài)的標(biāo)準(zhǔn)實(shí)踐。
到此這篇關(guān)于python利器pyproject.toml詳解的文章就介紹到這了,更多相關(guān)python pyproject.toml內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python內(nèi)置函數(shù)delattr的具體用法
本篇文章主要介紹了Python內(nèi)置函數(shù)delattr的具體用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
pandas對(duì)齊運(yùn)算的實(shí)現(xiàn)示例
本文主要介紹了pandas對(duì)齊運(yùn)算的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
一文詳解如何在Python中實(shí)現(xiàn)switch語句
這篇文章主要給大家介紹了關(guān)于如何在Python中實(shí)現(xiàn)switch語句的相關(guān)資料,今天在學(xué)習(xí)python的過程中,發(fā)現(xiàn)python沒有switch這個(gè)語法,所以這里給大家總結(jié)下,需要的朋友可以參考下2023-09-09
python進(jìn)行相關(guān)性分析并繪制散點(diǎn)圖詳解
這篇文章主要介紹了python進(jìn)行相關(guān)性分析并繪制散點(diǎn)圖,具有一定借鑒價(jià)值,需要的朋友可以參考下,希望能夠給你帶來幫助2021-09-09
使用 tf.nn.dynamic_rnn 展開時(shí)間維度方式
今天小編就為大家分享一篇使用 tf.nn.dynamic_rnn 展開時(shí)間維度方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python學(xué)習(xí)小技巧之列表項(xiàng)的拼接
這篇文章主要給大家介紹了Python學(xué)習(xí)小技巧之列表項(xiàng)的拼接的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05
Python?虛擬環(huán)境的價(jià)值和常用命令詳解
在實(shí)際項(xiàng)目開發(fā)中,我們通常會(huì)根據(jù)自己的需求去下載各種相應(yīng)的框架庫,如Scrapy、Beautiful?Soup等,但是可能每個(gè)項(xiàng)目使用的框架庫并不一樣,或使用框架的版本不一樣,今天給大家分享下Python?虛擬環(huán)境的價(jià)值和常用命令,感興趣的朋友一起看看吧2022-05-05
openCV入門學(xué)習(xí)基礎(chǔ)教程第二篇
人臉識(shí)別,物體檢測(cè),OpenCV是基石,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11

