Open1
[Python] sys.pathとPYTHONPATHを理解する

sys.path と PYTHONPATH
背景
Pythonで単体テスト(pytest)を実行したときに、パス設定の問題でModuleNotFoundエラーに苦しまされたため、sys.pathとPYTHONPATHについてちゃんと理解しようと思った。
sys.pathとは
モジュールを検索するパスを示す文字列のリスト。 PYTHONPATH 環境変数と、インストール時に指定したデフォルトパスで初期化されます。
PYTHONPATHとは
モジュールファイルのデフォルトの検索パスを追加します。この環境変数のフォーマットはシェルの PATH と同じで、 os.pathsep (Unix ならコロン、 Windows ならセミコロン) で区切られた1つ以上のディレクトリパスです。存在しないディレクトリは警告なしに無視されます。
pytestとの関連
- python3.2以前では、自作のモジュールについては各階層に空の__init__.pyを配置する必要がある。
- __init.py__はルートディレクトリには配置しない。
- python 3.3以降はそもそも__init__.pyの配置は不要。
参考