Pythonでpyenv+poetry+FastAPIな環境を作成する
はじめに
Python のプロジェクト環境構築する時はみなさんどうしていますか?
Python のバージョンだったりプロジェクトの依存するパッケージなどできる限り簡潔に環境構築したいと思う方も多いと思います。
私は pyenv + poetry を使用しています。これでプロジェクトごとにバージョン切り替えや仮想環境が作成できるので複数プロジェクトを開発するには良いかと思っています
今回は FastAPI を例に手順を記事にしていきたいと思います。
補足
Windows でも環境構築可能ですが、今回は Mac での手順になります
pyenv インストール
Homebrew
上にインストールします
※Homebrew
のインストールがまだの方はこちらからインストールできます
※インストール済みの方はアップデートしておくことをお勧めします
brew update
Homebrew
上にpyenv
をインストール
brew install pyenv
pyenv のパスを通す
以下を実行して、パスを通すための環境変数等を設定します
現在使っているshell
を確認します
echo $SHELL
# 出力結果
/usr/local/bin/zsh
zsh
またはbash
と表示されると思います
zsh
の場合、
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
bash
の方は上記のコマンドをzshrc
→bash_profile
と置換して実行してみてください
インストールが完了したら以下コマンドでpyenv
が使えることを確認
pyenv -v
# 出力結果
pyenv 2.3.35
pyenv 上に Python をインストール
まずpyenv
でインストール可能な Python 一覧を表示します
pyenv install --list
すると以下のように利用可能なバージョン一覧が表示されます
Available versions:
2.1.3
2.2.3
2.3.7
2.4.0
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
...
(以下略)
一覧の中からpython
バージョンを指定してインストールします
ここでは 2023 年 12 月時点で最新の3.12.0をインストールしてみたいと思います
※-dev
だったりa
が入っているものは無視して数字のみのものを選択するのが良いと思います
pyenv install 3.12.0
インストール完了後、pyenv
上にインストールされたか確認します
pyenv versions
* 3.12.0
ここで先ほど指定したバージョンが表示されていれば OK です
次に、インストールしたPython
をコマンドで使用できるように設定します
# 全体へ設定
pyenv global 3.12.0
# プロジェクトのみへ設定
pyenv local 3.12.0
これで python の 3.12.0 が使用できるようになりましたので以下コマンドで確認
python --version
# 出力結果
Python 3.12.0
Poetry インストール
公式サイトを参考にしながらインストールします
curl -sSL https://install.python-poetry.org | python3 -
こちらもパスを通します
echo 'export PATH="/Users/<ユーザー名>/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
bash の方はzshrc
→bash_profile
にしてください
※インストールできない場合はpython3
→python
に変換してみてください
インストールできたら確認します
poetry --version
# 出力結果
Poetry (version 1.7.1)
プロジェクトの作成
まず、プロジェクトごとにパッケージを管理したいので
パッケージのインストール先をプロジェクト内の.venv
ディレクトリになるようpoetry
の設定をします
poetry config virtualenvs.in-project true
プロジェクトで poetry 使用する Python のバージョンを指定します
poetry env use 3.12
新規でプロジェクト作成
poetry new fastapi-project
既存のプロジェクトをpoetry
配下にする場合には、
poetry init
これでpoetry
プロジェクトが出来上がったのでパッケージをインストールしてきます
FastAPI インストール
fastapi
とuvicorn
をインストールします
poetry add fastapi uvicorn
FastAPI
が実行されるよう最低限main.py
を実装
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
async def root():
return {'message': 'OK'}
では、サーバーを立ち上げてみましょう
poetry run uvicorn main:app --port 8080 --reload
localhost:8080にアクセスしてmessage: OK
と表示されていれば OK
まとめ
ここまでで紹介した方法で環境構築すると端末の環境を汚すことなく、
プロジェクトごとの仮想環境を作成してそこにパッケージを入れていくことができます。
pyenv
でPython
バージョンの切り替えもできるので複数プロジェクトにアサインされている時は必須ですね。
初回はつまずくことも多いですが慣れてしまえばメリットしかないのでぜひご活用ください!
参考資料
Discussion