跳至主要內容

Poetry 備忘錄

· 3 分鐘閱讀

這篇備忘錄記錄了 Poetry。

資訊

Poetry 是一個用於 Python 項目依賴管理和打包的工具。它旨在提供一個更簡潔、更直觀的開發體驗,解決了傳統 Python 項目中 pipvirtualenv 的一些痛點。

Poetry 將依賴管理、虛擬環境、打包和發布功能集成到一個工具中,使得 Python 項目的生命週期管理更加順暢。

1. 安裝 Poetry

推薦使用官方提供的腳本進行安裝:

Linux / macOS / WSL

curl -sSL https://install.python-poetry.org | python3 -

Windows (PowerShell)

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

安裝完成後,你可能需要將 Poetry 的可執行路徑添加到你的 PATH 環境變量中。安裝腳本通常會給出提示。

2. 創建新專案

要創建一個新的 Poetry 專案:

poetry new my-project
cd my-project

這會創建一個包含以下結構的新目錄:

my-project/
├── my_project/
│ └── __init__.py
└── pyproject.toml
└── README.md

3. pyproject.toml 文件

Poetry 使用 pyproject.toml 文件來管理項目元數據和依賴。這是 Poetry 的核心配置文件。

範例 pyproject.toml

[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected]>"]
readme = "README.md"
packages = [{include = "my_project"}] # 指定你的 Python 包

[tool.poetry.dependencies]
python = "^3.10" # 指定 Python 版本
requests = "^2.28.1" # 運行時依賴

[tool.poetry.group.dev.dependencies]
pytest = "^7.1.2" # 開發時依賴 (例如測試工具)

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

4. 管理依賴

添加依賴

poetry add requests    # 添加運行時依賴
poetry add --group dev pytest # 添加開發時依賴

這會更新 pyproject.toml 並安裝依賴到虛擬環境中。

移除依賴

poetry remove requests
poetry remove --group dev pytest

安裝依賴

如果 pyproject.tomlpoetry.lock 已經存在,安裝所有依賴:

poetry install

更新依賴

更新所有依賴到最新兼容版本:

poetry update

更新指定依賴:

poetry update requests

5. 虛擬環境

Poetry 會自動為每個專案創建和管理虛擬環境。

運行命令

在虛擬環境中運行命令:

poetry run python my_script.py

進入虛擬環境 Shell

poetry shell

然後你就可以直接運行 python 或其他已安裝的命令。

查看虛擬環境信息

poetry env info

刪除虛擬環境

poetry env remove python3.10 # 替換為實際的 Python 版本或環境路徑

6. 打包和發布

打包專案

創建一個源發行版(sdist)和一個輪子文件(wheel):

poetry build

打包文件會生成在 dist/ 目錄中。

發布到 PyPI

在發布之前,請確保你的 pyproject.toml 中的元數據是準確的。

poetry publish

如果你是第一次發布,可能需要配置 PyPI 憑據。

poetry config pypi-token.pypi <your-pypi-token>

7. 總結

Poetry 是一個現代化的 Python 項目管理工具,它簡化了依賴管理、虛擬環境、打包和發布的整個流程。它的 pyproject.toml 文件提供了一個清晰且中心化的方式來定義項目元數據和依賴,大大提升了開發效率和項目可維護性。

コメント

読み込み中...

コメントを投稿する