Poetry実践入門 #自分用メモ
はじめに
Q. poetryって何?
A. yarnのpython版みたいなもの
パッケージ管理がメイン。一応仮想環境の管理もできる。
仮想環境管理には、pyenvとの組み合わせが前提で作られてるっぽいので、pyenvも入れよう!
注意点
記事の流れとしては、最初に実践的なプロジェクト作成の流れを説明し、後半でそれぞれのコマンドの使い方を説明しています。自分用に書いたメモなので、情報が怪しい部分があります。正確な情報がほしい方は公式ドキュメントを見て下さい。
前提知識
- pyenvの使い方
- pyenvによるpythonのインストール方法
Ex:pyenv install 3.10.5
など - pyenvによるpythonのバージョン切り替え方法
Ex:pyenv local 3.10.5
など
- pyenvによるpythonのインストール方法
なお、詳しいpoetryの使い方は公式ドキュメント参照
poetryのインストール
Poetry documentation (ver. 1.1.6 日本語訳)
初期設定
プロジェクト毎に仮想環境が構築されるようにする。(やりたい方だけ)
尚、本記事ではこの設定がなされたものとして解説しています。
poetry config virtualenvs.create true
poetry config virtualenvs.in-project true
実践: poetryによる新規プロジェクト作成の一連の流れ(プロジェクト作成~仮想環境有効化)
1. 新規プロジェクトを作成
poetry new <project-name>
2. 仮想環境に使うpythonのバージョンを指定
-
使いたいバージョンを
pyenv
でインストールする(必要な場合)例:
pyenv install 3.10.5
-
仮想環境に使うpythonを指定する
例:
poetry env use 3.10.5
3. パッケージのインストール
今回は新規作成なのでこの工程はいらない。
ただし、既存のプロジェクトを引っ張ってきた場合などには行おう!
パッケージ管理の基本コマンド
# 追加
peotry add <package-name>
# 削除
poetry remove <package-name>
# pyproject.tomlに書いてあるものをインストール(yarn installと同じ)
poetry install <package-name>
pyproject.toml
に書いてるパッケージを全部インストールする。
poetry install
poetry install
をしても自動で仮想環境が作成される)
4. 仮想環境を作成(-
仮想環境を作成し、新規シェルで有効化する
poetry shell
-
今回は既存シェルで有効化したいので、一度新規シェルから抜ける。
exit
5. 仮想環境を有効化
source `poetry env info --path`/bin/activate
source (poetry env info --path)/bin/activate.fish
poetryの使い方
新規作成
新規プロジェクト作成
poetry new --src <project-name>
ディレクトリ構成
プロジェクト直下にsrcフォルダが作成され、その下にコードが生成される。
.
├── pyproject.toml
├── README.rst
├── src
│ └── python_test
│ └── __init__.py
└── tests
├── __init__.py
└── test_python_test.py
3 directories, 5 files
poetry new <project-name>
ディレクトリ構成
.
├── pyproject.toml
├── python_test
│ └── __init__.py
├── README.rst
└── tests
├── __init__.py
└── test_python_test.py
2 directories, 5 files
pyproject.toml
を追加する
既存プロジェクトに色々質問されるので、答えていく。
poetry init
パッケージ管理
# 追加
peotry add <package-name>
# 削除
poetry remove <package-name>
# pyproject.tomlに書いてあるものをインストール(yarn installと同じ)
poetry install
仮想環境の設定
仮想環境に使うpythonのversion指定
poetry env use <version>
#Ex:
env use python3.8.13
env use /full/path/to/python
env use system # 明示的に起動した仮想環境を無効にしたい場合
その他(仮想環境の管理)
poetry env list
# >>> .venv (Activated)
poetry env info
poetry env info --path
仮想環境の作成・有効化
poetryには、大きく分けて以下の2つの仮想環境の有効化方法がある。
poetry shell
source ./.venv/bin/activate
1.の方は新しいシェルを作成して、そこで仮想環境を有効化している。poetry独自のやり方。
2.の方はvenvなどで取られている方法で、既存のシェルで仮想環境を読み込む。多分こっちのほうがみんな慣れてるはず。
1.仮想環境の作成・有効化(新規シェル)
新しいシェルが作られるので、抜けるときはexitで良い。
仮想環境の作成もしてくれる!
poetry shell
exit
2.仮想環境の有効化(現在のシェル)
venvの./venv/bin/activate
をワンライナーでやる方法。エイリアスを作って登録しておくと便利。
新しいシェルは作られない。deactivate
で抜けれる。
仮想環境が複数ある場合には不具合を起こしそう?(未確認)
source `poetry env info --path`/bin/activate
deactivate
fishシェルの場合
source (poetry env info --path)/bin/activate.fish
alias penv 'source (poetry env info --path)/bin/activate.fish'
Discussion