パスにないPythonモジュールをインポートする方法がたくさんあることは知っていますが、 Pythonの__init.py__とsys.path.insertを使用してまだ出会っていません。どの方法が良いですか?パフォーマンスなど、どちらにも明らかな欠点はありますか? もう1つは「Pythonic」ですか?
私が考えることができるシナリオの 1 つは、ユーザーがダウンロードして任意のディレクトリに配置するプログラムがあるため、絶対パスがわからないということです (プログラムで取得しない限り)。フォルダ構成は
working dir
__init__.py
foo.py
src/
my_utils.py
__init__.py
__init__.py の使用と sys.path の変更の違いはわかりません。どこで違いが生じるか考えられるシナリオはありますか?
私の質問のパート 2 は、サブディレクトリからモジュールをインポートできるようにするために何かをしなければならないのはなぜですか? 私はPythonにかなり慣れていないので、パスをいじったり、initファイルを作成したりすることがボイラープレートである理由を理解していないかもしれません。私には、それは不必要な複雑さのように思えます。現在の作業ディレクトリに "dir" があり、"import dir.my_utils" と言った場合、__init__.py にインポートできるようにしたいすべてをリストしなければならない理由がわかりません。
重複していたらすみませんが、投稿する前に検索しました。
編集:ここに別の便利なリンクがあります: __init__.py ファイルを作成せずに共通の初期化コードを自動的に呼び出す