[python + github workflow] ModuleNotFoundError: No module named エラー

github Actions で、自動試験を workflow で記載してる時にModuleNotFoundError: No module named でなかなか前に進めなかった時の備忘録。

ちょっとディレクリ構成が複雑で

project がソースディレクトリで、others には自動試験には不要な試験が。
また、testsの中では、tests内部で参照される unit_utils.pyがあって。
あと、ソース内では、設定ファイルが本番と試験で参照箇所が違っていて、ソース内部からは相対パスで見てます。

なので、target ディレクトリ

とすると、ModuleNotFoundError が出る。さらに、unit_utils.py もうまく参照できない。

とありあえず正解は、

Set env で、 PYTHONPATH に srcディレクトリを追加。(cd で後で移動するので一つ上の階層)
試験実行時には、tests ディレクトリに移動。これにより、othersにある試験を無視。
poetry run python -m pytest で実行する。