こんにちわlisです!
Python3でプロジェクトのディレクトリ構成と実行についてです!
unittestを入れたくてtestsを入れたり、ソースをまとめたりしていたら
- 参照がエラーする
- うまく実行できなくなる
など、色々不都合が発生してしまいました……
そんな状況を打開すべく、ディレクトリ構成について調べて試しました!
プロジェクトのディレクトリ構成
ディレクトリ構成の正解は、このような構成でした。
― proj ├― proj │ ├― __init__.py │ ├― __main__.py (アプリとして動作させる場合のmain) │ └― *.py └― tests ├― __init__.py └― *.py
アプリとして実行するとき
mainを実行して、1つのアプリとしてプロジェクトを実行したい場合、
(プロジェクトのルートパスが、C:\work\projの場合) > cd c:\work\proj > python -m proj
と実行します。
python -mで指定している「proj」は、プロジェクトフォルダ内のprojフォルダになります。
― proj ├― proj ←これ └― tests
実行例
適当なプロジェクトの一例です。
ディレクトリ構成
C:\work\proj ├― proj | ├― __init__.py | ├― __main__.py | └― sub.py └― tests ├― __init__.py └― *.py
sub.py
def hoge(): print('hoge')
main.py
from . import sub if __name__ == '__main__': sub.hoge()
実行
C:\work\proj> python -m proj hoge
VSCodeで実行設定
project rootフォルダをVSCodeで開く。
どれでもいいので、Pythonのソースを開く。
サイドメニューから「実行」を開き、「launch.json ファイルを作成します。」というリンクテキストをクリック。
「Select a debug configuration」というのが上部に表示されます。
実行構成の種類を選ぶのですが、ここから「Module」を選択します。
「Debug Module」が出てきます。
ここでプロジェクト名を入力します。
前述しましたが、具体的には「←ここ」のところです。
― proj ├― proj ←ここ | ├― __init__.py | ├― __main__.py | └― *.py └― tests ├― __init__.py └― *.py
これで「.vscode/launch.json」が自動生成されます。
中身はこんなでした。
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: モジュール", "type": "python", "request": "launch", "module": "proj" } ] }
実行(F5)してみると、ちゃんとmain.pyが動作した結果が表示されました。
参考
コチラを参考にしました。ありがとうございました!
あとがき
Python3のディレクトリ構成と実行でした!
今までふわっと適当にディレクトリ作ったり分けたりしていたので、今度からはちゃんとしようと心に決めました。