🚀
Visual Studio Code Remote DevelopmentでPoetry + FastAPI
Visual Studio Code Remote Development?
VSCodeを使って仮想環境下で開発環境を構成できるツールです
メリットはいろいろあって
- ローカルマシンの構成に影響を与えない
- 新しい参加者が簡単に始められるようにし、全員が一貫した環境で作業できる
- ローカルOSで利用できないツールやランタイムを利用したり、複数のバージョンを管理できる
などなど、とにかく便利なのでまずは使ってみます。大体30分くらいでできます
構築手順
- 作業フォルダを作成してVSCodeを起動
$ mkdir vscode-remote-fastapi;cd $_
$ code .
- 拡張機能を開いて
remote development
で検索してインストール
-
リモートエクスプローラー
アイコンが追加されているのでクリック - 上部の
>CONTAINERS
をクリック -
+
ボタンNew Container
をクリック
-
Open Current Folder In Container
をクリック
- pythonを検索して
python 3
を選択
- nodeは
none
- okをクリックするとdocker開発環境が起動します
- 作業ディレクトリ内に環境に必要なファイルが作成されています
vscode-remote-fastapi
└── .devcontainer
├── devcontainer.json
└── Dockerfile
-
.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
- リモートエクスプローラーアイコンをクリック
- 起動している現在のコンテナを右クリックして
Rebuild Container
を選択、再構築します
- 起動したら
ターミナル
>新しいターミナル
を開いてインストールされているか確認
$ python -V
$ poetry -V
- 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
- poetry環境確認
$ poetry env info
Virtualenv
Python: 3.10.4
Implementation: CPython
Path: NA
System
Platform: linux
OS: posix
Python: /usr/local
- FastAPIをインストールして
main.py
を作成
$ poetry add fastapi uvicorn
$ touch app/main.py
-
main.py
を編集して"Hello World"
!
詳しくはFastAPIチュートリアル
backend/app/app/main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
- 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
- ブラウザで開きます
http://127.0.0.1:5000
最後に
チーム開発におけるpython開発環境トラブルがあると結構困るので
こんな仮想開発環境もいいんじゃないかと思います。便利なのに無料なのでお試しください
Discussion