最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python庫構(gòu)建之pyproject.toml配置文件詳解

 更新時間:2024年12月07日 09:18:09   作者:道真人  
pyproject.toml是Python項目標準化配置文件,由PEP?518引入,用于定義構(gòu)建系統(tǒng)、項目元數(shù)據(jù)和依賴管理,它替代了傳統(tǒng)的setup.cfg文件,通過指定構(gòu)建工具如setuptools或poetry,管理項目依賴,配置工具行為等,需要的朋友可以參考下

前言

pyproject.toml 是一個配置文件,用于定義 Python 項目的構(gòu)建系統(tǒng)和相關(guān)的元數(shù)據(jù)。它是 Python 社區(qū)為了解決項目構(gòu)建和依賴管理問題而引入的一種標準化方式,最初由 PEP 518 提出。pyproject.toml 文件被廣泛使用,尤其是在構(gòu)建工具(如 Poetry 和 Flit)中,用來替代傳統(tǒng)的 setup.cfg 文件。

主要用途

  • 定義構(gòu)建系統(tǒng)

    • pyproject.toml 文件中可以指定構(gòu)建工具及其版本,如 setuptools 或 poetry,以及這些工具所需的依賴項。這使得項目的構(gòu)建環(huán)境更加可控和可重復。
  • 項目元數(shù)據(jù)

    • 包括項目的名稱、版本、描述、作者、許可證等信息,可以在 pyproject.toml 文件中定義。這些信息可以被構(gòu)建工具或包管理工具讀取和使用。
  • 依賴管理

    • 該文件可以管理項目的依賴關(guān)系,包括運行時依賴、開發(fā)時依賴等,類似于 requirements.txt,但更加結(jié)構(gòu)化和靈活。
  • 配置構(gòu)建工具的行為

    • 對于不同的構(gòu)建工具,如 setuptools、poetry、black、isort 等,可以在 pyproject.toml 中配置其行為。

文件結(jié)構(gòu)

一個典型的 pyproject.toml 文件由幾個部分組成,每個部分對應(yīng)不同的功能和配置信息。以下是LlamaFactory示例:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[tool.ruff]
target-version = "py38"
line-length = 119
indent-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 = 2
known-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 = true
skip-magic-trailing-comma = false
line-ending = "auto"

這個 pyproject.toml 文件配置了項目的構(gòu)建系統(tǒng)以及使用 ruff 進行代碼檢查和格式化的相關(guān)設(shè)置。以下是各部分的詳細解釋:

1. [build-system]

  • requires: 指定了項目的構(gòu)建系統(tǒng)依賴項。這里要求使用 setuptools 版本 61.0 或更高版本。這意味著在構(gòu)建這個項目時,Python 環(huán)境中必須安裝 setuptools,且版本不低于 61.0。

  • build-backend: 指定了用于構(gòu)建項目的后端工具,這里使用的是 setuptools.build_meta。這意味著 setuptools 將作為構(gòu)建過程的核心工具。

2. [tool.ruff]

  • target-version: 指定了代碼的目標 Python 版本,這里是 Python 3.8 (py38)。ruff 將根據(jù)這個版本進行相應(yīng)的檢查和優(yōu)化。

  • line-length: 指定了代碼行的最大長度,超過這個長度會被視為格式錯誤。這里設(shè)置為 119 個字符。

  • indent-width: 指定代碼縮進的寬度,這里設(shè)置為 4 個空格。

3. [tool.ruff.lint]

  • ignore: 指定了一些要忽略的規(guī)則或錯誤代碼。列出的錯誤代碼將不會在代碼檢查時觸發(fā)。

  • select: 指定了要檢查的錯誤或警告類別。只有屬于這些類別的檢查才會被啟用。

4. [tool.ruff.lint.isort]

  • lines-after-imports: 指定在導入語句之后應(yīng)保留的空行數(shù),這里設(shè)置為 2 行。

  • known-first-party: 列出了項目中的第一方模塊,即 llamafactory,用于在導入排序時識別項目內(nèi)部的模塊。

  • known-third-party: 列出了已知的第三方庫,這些庫將在導入排序時與其他模塊區(qū)分開來。

5. [tool.ruff.format]

  • quote-style: 指定字符串使用的引號樣式,這里設(shè)置為 double,即雙引號。

  • indent-style: 指定縮進風格,這里使用 space(空格)而非 tab。

  • docstring-code-format: 設(shè)置為 true,表示在文檔字符串(docstring)中也會應(yīng)用代碼格式化規(guī)則。

  • skip-magic-trailing-comma: 設(shè)置為 false,意味著即使添加魔術(shù)尾逗號(magic trailing comma),也不會跳過格式化。

  • line-ending: 設(shè)置為 auto,表示根據(jù)操作系統(tǒng)的默認設(shè)置自動選擇行結(jié)尾符。

小結(jié)

這個 pyproject.toml 文件主要配置了項目的構(gòu)建系統(tǒng),并詳細定義了 ruff 工具用于代碼風格檢查和格式化的規(guī)則。這些設(shè)置幫助確保代碼的一致性和質(zhì)量,減少錯誤,并遵循團隊的編碼規(guī)范。

工作流程

在執(zhí)行 pip install . 時,pyproject.toml 文件會在構(gòu)建和安裝 Python 項目的過程中被引用。具體流程如下:

1. 識別 pyproject.toml 文件

  • 當你在項目的根目錄執(zhí)行 pip install . 命令時,pip 會首先檢查該目錄下是否存在 pyproject.toml 文件。
  • 如果存在這個文件,pip 會將其視為該項目的構(gòu)建配置文件,并按照其中的內(nèi)容來指導接下來的構(gòu)建過程。

2. 解析 build-system 部分

  • pip 首先讀取 pyproject.toml 文件中的 [build-system] 部分。這一部分定義了構(gòu)建項目所需的依賴項以及構(gòu)建后端(即構(gòu)建工具)。
    • requires: 列出了構(gòu)建這個項目所需的 Python 包。在執(zhí)行 pip install . 時,pip 會確保這些包已經(jīng)安裝。如果這些包沒有安裝,pip 會首先安裝這些依賴。
    • build-backend: 指定構(gòu)建項目所使用的后端工具,比如 setuptools.build_meta 或 poetry.core.masonry.apipip 會調(diào)用這個工具來構(gòu)建項目。

3. 構(gòu)建源分發(fā)包(SDist)和/或輪子包(Wheel)

  • 一旦 pip 安裝了構(gòu)建所需的依賴并加載了構(gòu)建后端,構(gòu)建后端會被調(diào)用來生成源分發(fā)包(SDist)和/或輪子包(Wheel)。
    • 如果使用 setuptools.build_meta,它會讀取項目的 setup.py 或 setup.cfg 文件來指導包的構(gòu)建。
    • 這些構(gòu)建輸出會保存在臨時目錄中,用于接下來的安裝步驟。

4. 安裝項目

  • pip 使用生成的包(SDist 或 Wheel)安裝項目到目標環(huán)境中(通常是當前 Python 環(huán)境)。
  • 如果項目依賴其他包,pip 會從 pyproject.toml 或 setup.py 中的 install_requires 列表中識別并安裝這些依賴。

5. 其他工具配置

  • pyproject.toml 中的其他部分,如 [tool.ruff],可能會被相應(yīng)的工具在構(gòu)建或開發(fā)過程中引用。雖然這些部分不會直接影響 pip install . 的過程,但它們在開發(fā)環(huán)境中依然重要。

簡化的執(zhí)行流程

  • pip 檢查并加載 pyproject.toml 文件。
  • 解析 build-system,安裝構(gòu)建所需的依賴。
  • 使用指定的構(gòu)建后端構(gòu)建項目(生成 SDist 和/或 Wheel)。
  • 安裝生成的包及其依賴。

總結(jié)

pyproject.toml 文件在 pip install . 的過程中會被 pip 引用,以確定如何構(gòu)建和安裝項目。pip 主要使用其中的 [build-system] 部分來加載構(gòu)建工具和依賴,然后調(diào)用這些工具生成項目的分發(fā)包,并最終將其安裝到當前環(huán)境中。

到此這篇關(guān)于python庫構(gòu)建之pyproject.toml配置文件詳解的文章就介紹到這了,更多相關(guān)python庫構(gòu)建pyproject.toml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python元組和字典的內(nèi)建函數(shù)實例詳解

    python元組和字典的內(nèi)建函數(shù)實例詳解

    這篇文章主要介紹了python元組和字典的內(nèi)建函數(shù),結(jié)合實例形式詳細分析了Python元組和字典的各種常見內(nèi)建函數(shù)功能與相關(guān)使用技巧,需要的朋友可以參考下
    2019-10-10
  • Python pickle模塊用法實例

    Python pickle模塊用法實例

    這篇文章主要介紹了Python pickle模塊用法實例,python的pickle模塊實現(xiàn)了基本的數(shù)據(jù)序列和反序列化,需要的朋友可以參考下
    2015-04-04
  • 如何將python項目部署在一臺服務(wù)器上

    如何將python項目部署在一臺服務(wù)器上

    服務(wù)器less技術(shù)是一種無需管理服務(wù)器即可運行應(yīng)用程序的方法,最流行的服務(wù)器less平臺是AWS Lambda,這篇文章主要介紹了如何將python項目部署在一臺服務(wù)器上,需要的朋友可以參考下
    2023-10-10
  • pycharm使用matplotlib.pyplot不顯示圖形的解決方法

    pycharm使用matplotlib.pyplot不顯示圖形的解決方法

    今天小編就為大家分享一篇pycharm使用matplotlib.pyplot不顯示圖形的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Django中軟刪除的具體實現(xiàn)

    Django中軟刪除的具體實現(xiàn)

    軟刪除是一種數(shù)據(jù)庫策略,通過標記字段而非實際刪除數(shù)據(jù),下面就來介紹一下如何實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-11-11
  • Python聊天室?guī)Ы缑鎸崿F(xiàn)的示例代碼(tkinter,Mysql,Treading,socket)

    Python聊天室?guī)Ы缑鎸崿F(xiàn)的示例代碼(tkinter,Mysql,Treading,socket)

    這篇文章主要介紹了Python聊天室?guī)Ы缑鎸崿F(xiàn)的示例代碼(tkinter,Mysql,Treading,socket),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Python 用__new__方法實現(xiàn)單例的操作

    Python 用__new__方法實現(xiàn)單例的操作

    這篇文章主要介紹了Python 用__new__方法實現(xiàn)單例的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • python3.5 + PyQt5 +Eric6 實現(xiàn)的一個計算器代碼

    python3.5 + PyQt5 +Eric6 實現(xiàn)的一個計算器代碼

    這篇文章主要介紹了python3.5 + PyQt5 +Eric6 實現(xiàn)的一個計算器代碼,在windows7 32位系統(tǒng)可以完美運行 計算器,有興趣的可以了解一下。
    2017-03-03
  • python基于win32api實現(xiàn)鍵盤輸入

    python基于win32api實現(xiàn)鍵盤輸入

    這篇文章主要介紹了python基于win32api實現(xiàn)鍵盤輸入,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • OpenCV實戰(zhàn)之實現(xiàn)手勢虛擬縮放效果

    OpenCV實戰(zhàn)之實現(xiàn)手勢虛擬縮放效果

    本篇將會以HandTrackingModule為模塊,實現(xiàn)通過手勢對本人的博客海報進行縮放。文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2022-11-11

最新評論

响水县| 山阳县| 浠水县| 沙湾县| 涟源市| 东方市| 黔南| 盱眙县| 通化市| 岳阳市| 勐海县| 辽宁省| 日喀则市| 昌图县| 若尔盖县| 德兴市| 嘉兴市| 当涂县| 浦东新区| 资溪县| 怀仁县| 贵州省| 沧州市| 南和县| 乳山市| 都兰县| 万年县| 阜康市| 民和| 林甸县| 牟定县| 图们市| 桃园县| 屏东县| 武乡县| 淅川县| 贵溪市| 拜城县| 临颍县| 富民县| 尼木县|