pyenv + PoetryでPython開発環境作成

pyenvを使ってpythonをインストールします。バージョンは3.10.xを選択します。

  • OS: Xubuntu
  • Python: 3.10.x
  • Shell: zsh

OSにXubuntuを使用していますが、Ubuntuでも同じだと思います。

1. pyenvをインストール

公式ページ

pyenvをダウンロードします。

1
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

pyenvにパスを通します。こちらはzsh用のコマンドです。bashなどの他のシェルを使用している場合は公式ページを見てください。

1
2
3
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

設定を再読み込みします。

1
source ~/.zshrc

pyenvがインストールできたか確認します。バージョン情報が表示されればOKです。

1
pyenv -v

2. Python 3.10.xをインストール

ガイド

必要なパッケージをインストールします。

1
2
3
4
5
sudo apt update
sudo apt install build-essential libbz2-dev libdb-dev \
libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libsqlite3-dev libssl-dev \
zlib1g-dev uuid-dev tk-dev

Python 3.10 をインストールします。

1
pyenv install 3.10

インストールできたことを確認します。

1
pyenv versions

インストールされたバージョンは3.10.10でした。普段使用するPython のバージョンを3.10.10に変更します。

1
pyenv global 3.10.10

3. Poetryをインストール

pyenvが管理しているpython 3.10.10環境にインストールします。
どこにインストールされるのかはpipのバージョン情報で確認できます。

1
pip --version

以下は実行例です。

1
pip 22.3.1 from /home/USERNAME/.pyenv/versions/3.10.10/lib/python3.10/site-packages/pip (python 3.10)

では、Poetryをインストールします。

1
pip install poetry

4. Poetryを使ってプロジェクトを作成

Poetryを使ってpython-my-appという名前のプロジェクトを作成します。

1
poetry new python-my-app

これで以下のようなディレクトリ構成を持つプロジェクトが作成されます。

1
2
3
4
5
6
7
python-my-app
├── pyproject.toml
├── python_my_app
│ └── __init__.py
├── README.md
└── tests
└── __init__.py

5. Python仮想環境を用意

続いて、このプロジェクト用のPython仮想環境を用意します。
現在使用している環境にライブラリを追加していくとバージョンの管理が難しくなるためです。

まず、ディレクトリを移動します。

1
cd python-my-app

続いて仮想環境を作成します。

1
python -m venv venv

これでvenvという名前のディレクトリが用意されました。この中に仮想環境の情報が保存されています。
次に仮想環境を有効にします。(仮想環境を無効にする(仮想環境から抜ける)場合はdeactivateを実行します)

1
. venv/bin/activate

ここで仮想環境が有効になったかどうかを確認します。以下のコマンドを実行しpipの場所が仮想環境の中になっていたらOKです。

1
pip --version

以下は実行例です。

1
pip 22.3.1 from /home/USERNAME/python-my-app/venv/lib/python3.10/site-packages/pip (python 3.10)

続いてPoetryを仮想環境にインストールします。

1
pip install poetry

Poetryがインストールされた場所を確認します。

1
which poetry

ここで仮想環境の外にパスが表示されている場合は、仮想環境を無効にしてから再度有効にします。

1
2
deactivate
. venv/bin/activate

もう1度which poetryを実行してみて、仮想環境の中にインストールされていたらOKです。
次のコマンドを実行しておきましょう。

1
poetry install

6. パッケージを追加

例として pendulum を追加してみます。

公式ページ

仮想環境が有効な状態で以下のコマンドを入力します。

1
poetry add pendulum

pyproject.toml ファイルが更新されます。

python_my_appmain.pyを作成し、以下の内容で保存します。

1
2
3
4
import pendulum

now_in_paris = pendulum.now('Europe/Paris')
print(now_in_paris)

実行してみましょう。エラーとならずに日時が出力されればOKです。

1
poetry run python python_my_app/main.py

次にblackを追加してみます。

公式ページ

仮想環境が有効な状態で以下のコマンドを入力します。

1
poetry add --group dev black

これでpyproject.tomlファイルの[tool.poetry.group.dev.dependencies]blackが追加されます。

blackでフォーマットしてみます。

1
poetry run black .

main.pyがフォーマットされます。シングルクォーテーションがダブルクォーテーションに置換されました。

以上です。