poetry
- python-poetry/poetry
- MIT, Python
- pyproject.toml <- setup.py, requirements.txt, setup.cfg, MANIFEST.in, Pipfile
brew install poetry # by macOS Homebrew
pip install poetry # by pip
poetry init # for existing project
poetry new my-project # for new project
# brew install python@3.12
python3.12 --version # 修改 python 版本
poetry env use python3.12
poetry run which python # venv
poetry run python --version
poetry self update # update poetry
poetry config --list # 查看配置
# POETRY_VIRTUALENVS_PATH
poetry config virtualenvs.path # 查看 virtualenvs 路径
# 可以考虑不提交 poetry.toml 到仓库
poetry config virtualenvs.create false --local # 项目维度配置 poetry.toml
poetry config virtualenvs.in-project true --local # 推荐 - 创建到 .venv 而不是 {cache-dir}/virtualenvs
Configuration
- 配置 POETRY_CONFIG_DIR, cache-dir
~/Library/Application Support/pypoetry
%APPDATA%\pypoetry
$XDG_CONFIG_HOME/.config/pypoetry
~/.config/pypoetry
- 数据 POETRY_HOME, POETRY_DATA_DIR
$XDG_DATA_HOME/pypoetry
,~/.local/share/pypoetry
%APPDATA%\pypoetry
~/Library/Application Support/pypoetry
- 缓存目录 POETRY_CACHE_DIR
- Linux:
$XDG_CACHE_HOME/pypoetry
,~/.cache/pypoetry
- Windows:
%LOCALAPPDATA%\pypoetry
- macOS:
~/Library/Caches/pypoetry
- Linux:
- 参考
system site-packages
python -m venv --system-site-packages .venv
poetry env use .venv/bin/python
Monorepo
FAQ
using requirements.txt
[project]
dynamic = ["dependencies", "optional-dependencies"]
[tool.setuptools.dynamic]
dependencies = {file = ["requirements.txt"]}
optional-dependencies = {dev = { file = ["requirements-dev.txt"] }}
Docker
Torch CPU only
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
# TORCH_ARCH cu116
poetry run pip install torch==2.5.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
poetry source add --priority explicit pytorch https://download.pytorch.org/whl/cpu
poetry add --source pytorch torch touchvision
poetry add --source pytorch torch=2.5.0+cpu
- 2.2.2 之后版本失败 Unable to find installation candidates for torch
- macOS 会安装失败
- Instructions for installing PyTorch python-poetry/poetry#6409
支持切换的配置方式
[tool.poetry.group.cpu]
optional = true
[tool.poetry.group.cpu.dependencies]
torch = { version = "^2.5.0", source = "pytorch-cpu", markers = "extra=='cpu' and extra!='gpu'" }
[tool.poetry.group.gpu]
optional = true
[tool.poetry.group.gpu.dependencies]
torch = { version = "^2.5.0", source = "pytorch-gpu", markers = "extra=='gpu' and extra!='cpu'" }
[tool.poetry.extras]
cpu = ["torch", "torchvision"]
gpu = ["torch", "torchvision"]
[[tool.poetry.source]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
priority = "explicit"
[[tool.poetry.source]]
name = "pytorch-gpu"
url = "https://download.pytorch.org/whl/cu121"
priority = "explicit"
[[tool.poetry.source]]
name = "pytorch-cuda"
url = "https://download.pytorch.org/whl/cu121"
priority = "explicit"
poetry install -E cpu --with cpu --sync
poetry install -E gpu --with gpu --sync
只初始化 venv
poetry run echo "Venv initialized"
用于先有 venv, 然后需要使用 pip 安装部分依赖, 然后再使用 poetry 安装的场景
# 进入 venv 环境
poetry shell