pythonで作るときのディレクトリ構成
pythonでのディレクトリ構成はimport周りがからんでくるため、かなり重要。
今更になって混乱してきたのでまとめとく。なおtestにはpytestを使用している。
パッケージ作るとき
パッケージ作るならさほど迷うことなくこうする。
project ├── mypkg │ ├── __init__.py │ ├── *.py │ └── libs │ ├── *.py │ └── __init__.py ├── tests │ ├── __init__.py │ ├── test_*.py │ └── test_sub │ ├── __init__.py │ └── test_*.py ├── docs ├── setup.py └── requirements.txt
mypkgの中でのimportはすべて相対importで記述。
パッケージを実行したいときはrootでpython -m mypkg.~~~ という感じで。
テスト時もrootでpytestコマンドでいける。
アプリケーション作るとき
要はそのまま実行ファイル的に使うものを作るとき。これが迷った。とりあえず今の結論はこう。
project ├── myapp │ ├── __init__.py │ ├── __main__.py │ ├── app.py │ └── libs │ ├── *.py │ └── __init__.py ├── tests │ ├── __init__.py │ ├── test_*.py │ └── test_sub │ ├── __init__.py │ └── test_*.py ├── docs └── requirements.txt
app.pyの main()にでも実行コードを詰め込み、__main__.pyの中身はこうしておく
from app import main if __name__ == "__main__": app.main()
importは__main__.py以外ではすべて相対importを使う。
実行時はrootでpython myappで実行、テストもrootでpytestコマンドで。
正解かどうかは知らないけどいまのところ不自由はない。
ディスカッション
コメント一覧
まだ、コメントがありません