🐍

rye+FastAPIでHello World!する方法

2023/07/09に公開

Pythonのパッケージ管理ライブラリryeを使ってFastAPIを起動する方法

各ライブラリのドキュメント

手順

ryeのインストール

  • ryeのインストール
bash
$ curl -sSf https://rye-up.com/get | bash
  • ryeコマンドに環境変数を設定
bash
$ echo 'source "$HOME/.rye/env"' >> ~/.bashrc

上記実施後、以下コマンドを叩くと以下が返ってくる。

bash
$ rye
An Experimental Package Management Solution for Python

Usage: rye [COMMAND]

Commands:
  add        Adds a Python package to this project
  build      Builds a package for distribution
  config     Reads or modifies the global `config.toml` file
  fetch      Fetches a Python interpreter for the local machine
  init       Creates a new python project
  install    Installs a package as global tool
  lock       Updates the lockfiles without installing dependencies
  make-req   Builds and prints a PEP 508 requirement string from parts
  pin        Pins a Python version to this project
  publish    Publish packages to a package repository
  remove     Removes a package from this project
  run        Runs a command installed into this package
  shell      Spawns a shell with the virtualenv activated
  show       Prints the current state of the project
  sync       Updates the virtualenv based on the pyproject.toml
  toolchain  Helper utility to manage Python toolchains
  tools      Helper utility to manage global tools
  self       Rye self management
  uninstall  Uninstalls a global tool
  version    Get or set project version
  help       Print this message or the help of the given subcommand(s)

Options:
      --version  Print the version
  -h, --help     Print help

rye下の環境にFastAPIをインストール、実行

  • ディレクトリ作成、仮想環境の初期化
bash
$ rye init fastapi-sample && cd fastapi-sample
  • 使用するPythonのバージョンを固定する(今回は3.11に設定)
bash
~/fastapi-sample $ rye pin 3.11
  • FastAPIをライブラリに追加
    • FastAPI[all]を指定することで、サーバー起動に必要なuvicornなど周辺ライブラリもインストールすることができる
bash
~/fastapi-sample $ rye add fastapi[all]
  • Fastapi[all]のインストール
    • 本コマンドの実行によって、requirements-dev.lockrequirements.lockファイルが作成される
bash
~/fastapi-sample $ rye sync
  • main.pyの作成
main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
  • サーバーの起動
    • rye環境下で実行しているので、rye runをつけて実行する必要がある
bash
~/fastapi-sample $ rye run uvicorn main:app --reload
INFO:     Will watch for changes in these directories: ['/fastapi-sample']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [8087] using WatchFiles
INFO:     Started server process [8089]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
  • http://127.0.0.1:8000にアクセスすると以下のような画面が表示される

以上。

Discussion