🙌

Poetry実践入門 #自分用メモ

2022/07/09に公開

はじめに

Q. poetryって何?

A. yarnのpython版みたいなもの
パッケージ管理がメイン。一応仮想環境の管理もできる。
仮想環境管理には、pyenvとの組み合わせが前提で作られてるっぽいので、pyenvも入れよう!

注意点

記事の流れとしては、最初に実践的なプロジェクト作成の流れを説明し、後半でそれぞれのコマンドの使い方を説明しています。自分用に書いたメモなので、情報が怪しい部分があります。正確な情報がほしい方は公式ドキュメントを見て下さい。

前提知識

  • pyenvの使い方
    • pyenvによるpythonのインストール方法
      Ex: pyenv install 3.10.5 など
    • pyenvによるpythonのバージョン切り替え方法
      Ex: pyenv local 3.10.5 など

なお、詳しいpoetryの使い方は公式ドキュメント参照
https://python-poetry.org/docs/

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のバージョンを指定

  1. 使いたいバージョンをpyenvでインストールする(必要な場合)

    例: pyenv install 3.10.5

  2. 仮想環境に使う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

4. 仮想環境を作成(poetry installをしても自動で仮想環境が作成される)

  1. 仮想環境を作成し、新規シェルで有効化する

    poetry shell

  2. 今回は既存シェルで有効化したいので、一度新規シェルから抜ける。

    exit

5. 仮想環境を有効化

bash
source `poetry env info --path`/bin/activate
fish
source (poetry env info --path)/bin/activate.fish

poetryの使い方

新規作成

新規プロジェクト作成

srcフォルダを作成するver
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
通常ver
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
仮想環境のpath
poetry env info --path

仮想環境の作成・有効化

poetryには、大きく分けて以下の2つの仮想環境の有効化方法がある。

1.新規シェルで有効化
poetry shell
2.現在のシェルで有効化
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