@campbel2525 さんのものを利用させていただいております。 https://github.com/campbel2525/python-sample
fastapi のサンプルです
fastapi には jwt 認証を入れています。 フォーマッタ窓が入っています。 フォルダ構成は今考え中で一旦 laravel のフォルダ構成を参考にして作りました
よく使うコマンドは Makefile にまとめてあります
環境の詳細 python: 3.10.0 docker fasapi 想定エディタ: vscode or cursor デバッグ: debugpy ライブラリ管理: pipenv orm: sqlalchemy mysql: 8.0 フォーマッターなど: flake8, mypy, black, isort jwt: pyJwt
手順 1 pc に docker が入っていない方は docker のインストールをしてください 公式サイト: https://www.docker.com/ja-jp/
手順 2 下記のコマンドを実行して docker の開発環境を作成します
make init
手順 3 下記のコマンドにて fastapi サーバーを立ち上げる
make fastapi-run
手順 4
ブラウザで
http://localhost:8000/docs#/
にアクセスして swagger が表示されれば OK
コンテナが立ち上がっている状態で下記のコマンドを実行してから push すること フォーマッタの実行、静的解析チェックが走ります。
make check
docker を利用しているので モジュールをインストールする場合はコンテナの中に入ってインストールする必要があります またモジュールの管理に pipenv を使用しているため特別な方法でインストールを実行する必要があります 以下にその方法を説明します
例 numpy をインストールする方法
手順 1 下記のコマンドでコンテナの中に入ります
make shell
手順 2 下記のコマンドで numpy をインストールします
pipenv install numpy
docker を利用しているので python を実行する場合は、コンテナの中に入って python を実行する必要があります。 またモジュールの管理に pipenv を使用しているため特別な方法で python を実行する必要があります 以下にその方法を説明します
例
apps/scientist/app/src/sample.py
を実行する場合
手順 1 下記のコマンドでコンテナの中に入ります
make shell
手順 2
下記のコマンドで apps/scientist/app/src/sample.py
を実行します
pipenv run python app/src/sample.py
python フォルダが docker の app にマウントしているため実行する python のファイルはpython/sample1.py
ではなくsample1.py
となります。
vscode で debugpy によるデバッグ方法を説明します 参考: https://atmarkit.itmedia.co.jp/ait/articles/2107/16/news029.html
python/src/sample.py
をデバッグする方法
手順 1 vscode のプラグインの XXX をインストールします
手順 2
python/src/sample.py
のデバッグのコメントアウトを外します
手順 3
「python の実行方法」を参考に実行し python/src/sample.py
を実行します
手順4 コンソールを確認すると
waiting ...
と表示されていることを確認
手順 5 自分がデバッグを開始したい箇所にブレークポイントをセットします
手順 6 F5 のキーを押します デバッグが開始されます。
python にはプログラミングコードの品質を保つため、お勧めされているコードフォーマットや静的解析があります。 下記のコマンドを実行することで python 配下の python コードが自動で整形がされ、また静的解析が行われます。
make check
app/models
配下に定義してあるテーブルが管理されます
新しくモデルのファイルを追加した場合はapp/models/__init__.py
に追記をする必要があります
下記のコマンドを実行することでマイグレーションとマイグレートが実行できます
pipenv run alembic revision --autogenerate -m 'comment'
pipenv run alembic upgrade head
下記のコマンドを実行してから push すること
make check
下記のことが想定です
これを行う理由としては PC の cpu や gpu を使用するためです。 vscode 上でやるとうまくいかない可能性があるためターミナルで行うほうがいいです
pipenv install がうまくいかない場合は下記のどちらかを行うといいです
Pipfile.lock
を削除してからpipenv install
を実行Pipfile
とPipfile.lock
を削除してからpipenv install xxx yyy
としてライブラリをインストールするcd python
rm -rf .venv
# export PYTHONPATH=$PYTHONPATH:./python
pipenv install
pipenv run python app/src/transformer.py
作ったER図のリンク
https://drive.google.com/file/d/1fJrrGleJeii278IrmqjubTv33otG3-Rt/view?usp=sharing