🚀

Visual Studio Code Remote DevelopmentでPoetry + FastAPI

2022/06/09に公開

Visual Studio Code Remote Development?

VSCodeを使って仮想環境下で開発環境を構成できるツールです
メリットはいろいろあって

  • ローカルマシンの構成に影響を与えない
  • 新しい参加者が簡単に始められるようにし、全員が一貫した環境で作業できる
  • ローカルOSで利用できないツールやランタイムを利用したり、複数のバージョンを管理できる

などなど、とにかく便利なのでまずは使ってみます。大体30分くらいでできます

構築手順

  1. 作業フォルダを作成してVSCodeを起動
$ mkdir vscode-remote-fastapi;cd $_
$ code .
  1. 拡張機能を開いて remote developmentで検索してインストール
  2. リモートエクスプローラーアイコンが追加されているのでクリック
  3. 上部の>CONTAINERSをクリック
  4. + ボタンNew Containerをクリック
  5. Open Current Folder In Containerをクリック
  6. pythonを検索してpython 3を選択
  7. nodeはnone
  8. okをクリックするとdocker開発環境が起動します
  9. 作業ディレクトリ内に環境に必要なファイルが作成されています
vscode-remote-fastapi
└── .devcontainer
      ├── devcontainer.json
      └── Dockerfile
  1. .devcontainer/以下のDockerfileを編集してpoetryをインストールします
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.234.0/containers/python-3/.devcontainer/base.Dockerfile

# [Choice] Python version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.10, 3.9, 3.8, 3.7, 3.6, 3-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3.7-bullseye, 3.6-bullseye, 3-buster, 3.10-buster, 3.9-buster, 3.8-buster, 3.7-buster, 3.6-buster
ARG VARIANT="3.10-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}

+ # Poetry
+ RUN curl -sSL https://install.python-poetry.org | POETRY_HOME=/opt/poetry python3 - && \
+     cd /usr/local/bin && \
+     ln -s /opt/poetry/bin/poetry && \
+     poetry config virtualenvs.create true
  1. リモートエクスプローラーアイコンをクリック
  2. 起動している現在のコンテナを右クリックしてRebuild Containerを選択、再構築します
  3. 起動したらターミナル>新しいターミナルを開いてインストールされているか確認
$ python -V
$ poetry -V
  1. fastapiセットアップ
$ mkdir backend;cd $_
$ poetry new app
$ cd app
$ poetry config virtualenvs.in-project true --local
$ poetry config --list
cache-dir = "/home/vscode/.cache/pypoetry"
experimental.new-installer = true
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/vscode/.cache/pypoetry/virtualenvs
  1. poetry環境確認
$ poetry env info

Virtualenv
Python:         3.10.4
Implementation: CPython
Path:           NA

System
Platform: linux
OS:       posix
Python:   /usr/local
  1. FastAPIをインストールしてmain.pyを作成
$ poetry add fastapi uvicorn
$ touch app/main.py
  1. main.pyを編集して"Hello World"
    詳しくはFastAPIチュートリアル

https://fastapi.tiangolo.com/ja/tutorial/first-steps/

backend/app/app/main.py
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

  1. FastAPIを起動します!
$ poetry shell
(.venv)$ uvicorn app.main:app --port 5000 --reload
INFO:     Will watch for changes in these directories: ['/workspaces/vscode-remote-fastapi/backend/app']
INFO:     Uvicorn running on http://127.0.0.1:5000 (Press CTRL+C to quit)
INFO:     Started reloader process [5818] using statreload
INFO:     Started server process [5820]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     127.0.0.1:49540 - "GET / HTTP/1.1" 200 OK
  1. ブラウザで開きます
    http://127.0.0.1:5000

最後に

チーム開発におけるpython開発環境トラブルがあると結構困るので
こんな仮想開発環境もいいんじゃないかと思います。便利なのに無料なのでお試しください

Discussion