pyenv + poetry 環境構築
概要
Pythonの環境構築のまとめです。Pythonのバージョン管理にpyenv、依存関係管理とパッケージ管理にpoetryを使用しています。フォーマッターにruffを設定する手順についても最後にTipsでまとめています。
参考リンク
Poetry documentation (日本語訳)
Poetry 公式ドキュメント
手順
仮想環境作成
Pythonのインストール可能なバージョンの確認
pyenv install --list
Pythonをインストール
pyenv install 3.11.7
Poetryをインストール
pip install poetry
仮想環境をプロジェクト直下に生成
poetry config virtualenvs.in-project true
pyproject.toml作成
poetry init
sub-shellを起動(仮想環境が使えるshell)
poetry shell
Pythonのバージョン確認
Python -V
pyenv installでinstallしたバージョンと同じであることを確認
パッケージインストール
パッケージ名でインストール
poetry add numpy pandas
requirements.txtからインストール
cat requirements.txt | xargs poetry add
パッケージ依存関係の更新
poetry update
requirements.txt出力
poetry export -f requirements.txt --output requirements.txt --without-hashes
Tips
Makefileで実行コマンドを管理すると楽
PHONY: update-lib
update-lib:
poetry install --no-root
poetry update
poetry config warnings.export false
poetry export -f requirements.txt --output requirements.txt --without-hashes
パッケージはグループで管理できる
poetry add mkdocs --group docs
プロジェクトのディレクトリを作成するときの設定
https://python-poetry.org/docs/pyproject/#packages
[tool.poetry]
# ...
packages = [
{ include = "my_package" },
{ include = "extra_package/**/*.py" },
]
ruffの設定
ruffをインストール
poetry add ruff --group dev
pyproject.tomlでruffの設定を記述
[tool.ruff]
src = ["scripts"]
target-version = "py311"
line-length = 119
exclude = [".mypy_cache"]
extend-select = ["I"]
fixable = ["I"]
ignore = ["I001"]
[tool.ruff.lint.isort]
known-first-party = ["steps", "utils"]
.vscode/settings.jsonで保存時にruffが起動するように設定
{
"[python]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
},
"editor.defaultFormatter": "charliermarsh.ruff"
}
}