【Python】PyenvとPoetryで開発環境を作成する手順

この記事ではPyenvとPoetryを使いプロジェクトごとの仮想環境を作成する手順を紹介します。例としてFast APIを使いAPIを作成します。

Pyenvの概要

Pyenvとは

PyenvはPythonのバージョン管理ツールです。Pyenvを使うことでPC内に複数の異なるバージョンのPythonを共存させることができ、使用するPythonのバージョンの切り替えが簡単にできます。 また、Python 3.12.1をPCのデフォルトとして使いたいが、特定のプロジェクトではPython 3.10.0を使うということもできます。

Pyenvでよく使うコマンド

Pyenvには多くのコマンドが用意されていますが、よく使うものをまとめました。

やりたいことコマンド
インストール可能なPythonバージョン一覧確認pyenv install -l
Pythonのインストールpyenv install {バージョン名}
インストール済Pythonの一覧確認pyenv versions
グローバルで使用するPythonのバージョンを設定pyenv global {インストール済バージョン名}
特定のディレクトリ配下で使用するPythonのバージョンを設定pyenv local {インストール済バージョン名}
Pythonのアンインストールpyenv uninstall {バージョン名}

Poetryの概要

Poetryとは

Poetryはプロジェクトごとの仮想環境、パッケージの管理ツールです。Pythonで仮想環境を作る際にvenvや virtualenvでは手動で管理する必要がありますが、Poetryではプロジェクト内でpoetry install コマンドを実行するだけで仮想環境を作成できます。

Poetryでよく使うコマンド

Poetryには多くのコマンドが用意されていますが、よく使うものをまとめました。

やりたいことコマンド
プロジェクト新規作成poetry new {プロジェクト名}
既存プロジェクトにPoetry追加poetry init
仮想環境の切り替えpoetry env use {Pythonのパス/Pythonバージョン}
仮想環境一覧確認poetry env list
現在の仮想環境の詳細情報表示poetry env info
仮想環境削除poetry remove {環境名}
パッケージ追加poetry add {パッケージ名}
追加済パッケージ一覧確認poetry show
パッケージ削除poetry remove {パッケージ名}
パッケージインストールpoetry install
仮想環境内でコマンド実行poetry run {コマンド}

Fast APIを使ったプロジェクトの開発環境作成

Pyenvでプロジェクトで使用するPython環境を作成

プロジェクトで使用するバージョンのPythonをインストールします。pyenv localコマンドを使用することで特定のディレクトリ配下で使用するPythonのバージョンを指定することができます。

今回の例ではPython 3.12.0を使用します。Fast APIを使ったプロジェクトにするため “fast-api-test"というディレクトリを作り、そのディレクトリ配下で使用するPythonのバージョンを3.12.0にします。

# プロジェクト用のディレクトリ作成
$ mkdir fast-api-test
$ cd fast-api-test

# Python3.12.0をインストール
$ pyenv install 3.12.0

# プロジェクトディレクトリ配下で使用するPythonのバージョンを3.12.0に指定
$ pyenv local 3.12.0

Poetryでプロジェクト新規作成しパッケージを追加

$ poetry init

# パッケージ名
Package name [fast-api-test]:

# アプリバージョン
Version [0.1.0]:

# アプリの説明
Description []:  Test app of Fast API

# アプリの作者
Author [xxxx@xxx.yyy>, n to skip]:

# ライセンス
License []:

# 使用するPythonのバージョン
Compatible Python versions [^3.12]:

Would you like to define your main dependencies interactively? (yes/no) [yes]  no

# Fast APIパッケージを追加
$ poetry add fastapi

# Uvicornパッケージを追加
 poetry add uvicorn

# パッケージをインストール
poetry install

Fast APIによるAPIエンドポイントの作成

/hello にアクセスすると {“message": “Hello World"} とJSONを返すAPIエンドポイントを作成します。プロジェクト直下にmain.pyを以下のように作成します。

# Fast APIをインポート
from fastapi import FastAPI

# Fast APIのインスタンスを作成
app = FastAPI()

# APIエンドポイント定義
@app.get("/hello")
def hello():
    return {"message": "Hello World"}

作成したAPIをローカルでUvicornを起動し動作確認します。localhost:8080/hello にGETリクエストを投げて{“message": “Hello World"}が返ってくることを確認します。

# Uvicorn上で作成したAPIを実行
$ poetry run uvicorn main:app --port 8080 --reload

# 作成したAPIの動作確認
$ curl http://localhost:8080/hello
{"message":"Hello World"}

参照情報