概要
ローカル環境を構築することには、それなりのコストを伴います。もちろんここで多少苦労したほうがよいという意見はすごく分かります。が、それで気持ちが削がれてしまうのももったいないと思う次第です。
そこで、Flask/Django/JupyterNotebook向けの Python開発環境構築を3コマンドで完了 させられるようなテンプレートを作成しました。(cd
を除く)
前提条件
- MacOSであること
-
git
およびmake
コマンドが有効であること(デフォルトで有効なはず)
※conda
がインストールされている場合は、pipとのバッティングが発生し中途で失敗する可能性があります。
ローカル構築イメージ
Dockerコンテナ上でアプリを動かすことになります。よく分かっていなくても、Dockerコンテナを使って開発していると言うことができます。
- bind mountによってホストPCからコンテナへのディレクトリ提供を行っています。これにより、ホストPC側で編集したファイルの内容をコンテナ側で読み込むことを実現しています。
- ホストPCからのアクセスについては、ポートフォワーディングを採用しています。プロジェクトによってコンテナ側の接続ポートは変更していますが、フォワードするホスト側のポートはすべて8000番に統一しました。
構築手順
1. テンプレートをダウンロード
git clone
によるダウンロード方法を記載します。
git clone git@github.com:mintak21/local-py-dev-template.git
2. テンプレートを開発用ディレクトリへ展開
展開先ディレクトリを指定して、プロジェクトの展開を行います。
作成したプロジェクトに応じて、make
コマンドを使い分けます。
cd local-py-dev-template
# jupyterプロジェクトを作成する場合
make create_jupyter_pj
# flaskプロジェクトを作成する場合
make create_flask_pj
# djangoプロジェクトを作成する場合
make create_django_pj
- 指定可能な引数
引数名 | 概要 | 省略時値 |
---|---|---|
TARGET_DIR | 展開先ディレクトリ(存在しない場合は作成) | ~/workspace/project |
DJANGO_PJ_NAME | djangoの場合に指定可能。Djangoテンプレートのプロジェクト名 | mysite |
引数を指定したコマンド例
# 1つ上の階層のflask_dirディレクトリにflaskプロジェクトを展開
make create_flask_pj TARGET_DIR=../flask_dir
# ~/workspaceディレクトリにdjangoプロジェクトを展開、djangoプロジェクト名はblogとする
make create_django_pj TARGET_DIR=~/workspace DJANGO_PJ_NAME=blog
3. コンテナ起動
2にて展開したディレクトリへ移動し、Dockerイメージ、コンテナを作成、起動を行います。
cd ${TARGET_DIR}
make run
4. 接続
いずれのコンテナもホストPCの8000番ポートでのポートフォワーディングを行なっているので、以下にアクセスすることができれば接続ができ、記載している内容が表示されていれば設定完了です。
アクセス先: http://localhost:8000/
プロジェクト | 期待結果 |
---|---|
Jupyter | Jupyterホーム画面で、HelloPython.ipynb ファイルが見えている |
Flask |
Hello Flask! と表示されている |
Django | ロケットが出ている |
5. コンテナ停止(Shutdown)
Foregroundで実行しているため、ターミナル上のプロセスを停止することでコンテナが停止します。
ターミナルでCtrl + C
おまけ. Visual-Studio-Codeセットアップ
ここまでで、起動と接続が出来たので、これ以降は開発を進めていくことになります。
開発エディタにはVim
やpytorch
などもありますが、ここではVisual-Studio-Code
を用いて開発を進められるようにしています。
導入は1コマンドで完了します。
make setup_vscode # local-py-dev-templateディレクトリで実行
設定概略
単にVisual-Studio-Code
をインストールするだけではなく、静的解析やpytest
などの設定、必要&有用な拡張機能の導入も同時に行うようにしています。
-
brew cask
によるVisual-Studio-Code
のインストール - パッケージ導入(
pip
)
- 静的解析:flake8
- import整列:isort
- フォーマッタ:autopep8
- typeチェック:mypy
- テスト:pytest
- 拡張機能導入(
code --install-extension
)
- Microsoft-Python : Python拡張ツール(必須)
- Bracket Pair Colorizer : 対応するかぎかっこが色で見やすくなる
- Whitespace+ : タブと空白を可視化
- Docker : vscodeでDockerが扱える
- vscode-icons : アイコンを見やすくする
- autoDocString : DocString作成補助
Others
ローカル側もpipenv
などの仮想環境を利用すべきかもしれませんが、自分の知るpythonic
な諸先輩方はピュアPythonを使っていることが多かったため、これに倣い仮想環境は導入していません。