同様の質問をいくつか読んだことがあります。特に、これimp.load_module
は私が望むものに近いと思われますが、なぜまだ ImportErrors が発生するのか理解できません。ここに私のフォルダ階層があります:
program\
__init__.py
main.py
thirdparty\
__init__.py
css\
__init__.py
css.py
utils\
__init__.py
http.py
私はmain.py
次のコードを持っています。これは、thirdparty\
ディレクトリを検索し、見つかった各モジュールをロードすることを目的としています。各モジュールは、独自の個別のディレクトリにあります。
import os
import imp
for root, dirs, files in os.walk("thirdparty"):
for source in (s for s in files if s.endswith(".py")):
name = os.path.splitext(os.path.basename(source))[0]
m = imp.load_module(name, *imp.find_module(name, [root]))
問題はcss.py
、独自のサブフォルダーを使用して、そこから物をロードすることですutils
. その中に次のような行があります。
from utils import http
そして、それが失敗するところです。main.py を実行すると、このエラーが発生します。
Traceback (most recent call last):
File "main.py", line 7, in <module>
m = imp.load_module(name, *imp.find_module(name, [root]))
File "thirdparty/css/css.py", line 1, in <module>
from utils import http
ImportError: No module named utils
私は困惑しています。css.py
独自のフォルダーに自己完結型であり、css.py
個別に実行すると問題なくインポートされutils
ます。これは何が原因ですか?