[note] Python Poetry
參考資料
- :thumbsup: Python 套件管理器——Poetry 完全入門指南
- Python Poetry
TL;DR
# 建立新的 Python 專案
$ poetry new poetry-demo # 初始化專案
$ pyenv local 3.9.18 # 選擇專案要用的 Python s版本
$ poetry env use python # 使用當前 python 版本建立 virtual env
$ poetry install # 安裝專案中已經使用的套間
$ poetry add [package] # 安裝新的套件
$ poetry shell # 進入虛擬環境
$ poetry config --list # 檢視目前 poetry 的設定
CMD / CLI 基本使用
參考資料
Commands @ Python Poetry
Poetry 專案初始化
# 使用 Poetry 建立一個新的 Python 專案
$ poetry new poetry-demo
# 在既有的 Python 專案中使用 Poetry
$ poetry init
Poetry 虛擬環境
# 建立虛 擬環境所使用的 Python 版本
$ poetry env use python
# 移除虛擬環境(適合用在 virtualenvs.in-project 為 false)
$ poetry env remove <env>
$ poetry env remove --all
# 啟動虛擬環境(如果沒有的話,會建立新的)
$ poetry shell
# 列出現在有的虛擬環境
$ poetry env list
# 原本的虛擬環境會被放在 Library/Caches/pypoetry/virtualenvs/[project-name]-[hash]-[py-version]
# 如果設成 true 則會被放在專案裡的 .venv 中
$ poetry config virtualenvs.in-project true
- 當
virtualenvs.in-project
是true
時,如果想要移除虛擬環境,直接把.venv
刪掉即可,不用使用poetry env remove
,接著再用poetry shell
或poetry env use python
建立新的虛擬環境。
Poetry 套件管理
# 安裝套件,也可以一次安裝多個套件
# -D, --dev
$ poetry add fastapi
$ poetry add fastapi beanie
# 如果自己手動更新 pyproject.toml,需要進一步更新 poetry.lock 檔
$ poetry lock
# 安裝套件至虛擬環境
$ poetry install
# 更新套件
$ poetry update # 更新所有可以更新的套件
$ poetry update <package> # 更新至最新的 compatible version
$ poetry add <package>@latest # 更新至最新的版本
# 檢查 poetry.lock 和 pyproject.toml 的內容是否一致
$ poetry check --lock
# 檢視所有已安裝的套件(來自 poetry.lock)
$ poetry show --tree
$ poetry show <package> --tree
# 移除套件
$ poetry remove <package>
- 當使用 Poetry 安裝套件時,會更新
pyproject.toml
,接著會更新poetry.lock
檔 - 虛擬環境會看的是
poetry.lock
檔 poetry lock
只會更新poetry.lock
檔,並不會更新在虛擬環境中的套件,因此需要在用poetry install
來更新虛擬環境中的套件poetry.lock
的意義就類似requirements.txt
# 檢視 Poetry 的設定
$ poetry config --list
# 更新 Poetry 版本
$ poetry self update
搭配 pyenv 使用
# https://blog.kyomind.tw/poetry-pyenv-practical-tips/
$ pyenv local 3.9.12
$ poetry env use 3.9.12
# 或
$ poetry env use python
Install poetry
直接照 Installation 透過 pipx 安裝即可。