Skip to content

mozkzki/template-python-with-dev-container

Repository files navigation

template-python-with-dev-container

Python開発用テンプレート。VSCodeのRemote Containers での開発用。

ファイル構成

  • .devcontainer/devcontainer.json
  • .devcontainer/Dockerfile
  • .devcontainer/dotfiles
    • zshの設定等

Shell環境

kind tool
shell zsh
zsh framework prezto
prompt powerlevel10k

Python環境

kind tool
package management pip
testing framework pytest
linter flake8
formatter black
type check mypy

※ コンテナなのでPythonの仮想環境 (PoetryとかPipenvとか) は使わない

導入方法

※M1 Macでのみ動確

  1. ローカルにコンテナ環境を用意 (MacだとRancher Desktop簡単)
  2. VSCodeに「Remote - Containers」プラグインをインストール
  3. git cloneしてVSCodeでプロジェクトを開く
  4. VSCodeの画面左下の緑ゾーンをクリック
  5. Reopen in Containerをクリック
  6. コンテナ内でVSCodeが開いたら準備完了 (初回は時間かかる)

開発方法

とりあえず一通り動確したい時

make lint
make ut
make start

Run

python ./main/my/app.py
# もしくは
make start

Unit Test

全部実行

pytest
pytest -v # verbose
pytest -s # 標準出力を出す (--capture=noと同じ)
pytest -ra # サマリーを表示 (テストをpassしたもの以外)
pytest -rA # サマリーを表示 (テストをpassしたものも含む)

指定して実行
(テストファイル名, パッケージ名, テストクラス名, メソッド名, 割と何でも拾ってくれる。部分一致でも。)

pytest -k app
pytest -k test_app.py
pytest -k my

マーカーを指定して実行

pytest -m 'slow'
pytest -m 'not slow'

カバレッジレポートも作成

pytest -v --capture=no --cov-config .coveragerc --cov=main --cov-report=xml --cov-report=term-missing .
# もしくは
make ut

VSCodeでコードカバレッジを見るにはプラグイン(Coverage Gutters)が必要(導入済み)。表示されない場合は、コマンドパレットでCoverage Gutters: Display Coverageする。

Lint

flake8 --max-line-length=100 --ignore=E203,W503 ./main
# もしくは
make lint

依存パッケージの追加方法

  1. requirements.txtに追記
  2. Rebuild Container

注意:pip installで追加すると下記警告が出る場合がある。--upgradeするとbin以下が消えて既に導入済みのパッケージが使えなくなる。このため上記手順が無難。

WARNING: Target directory /home/../. already exists. Specify --upgrade to force replacement.

参考

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages