1
我已經通讀了幾個類似的問題,特別是this one about 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時出現此錯誤。
我很難過。 css.py
自帶在自己的文件夾中,當我分別運行css.py
時,它會輸入utils
就好了。這是什麼造成的?
from .utils import http
或通過添加文件夾導入到Python的路徑:
sys.path.append(os.path.join(root, source))
當您導入模塊thirdparty
,地方
我遇到了這個完全相同的問題。你有沒有找到答案?在Python 3中imp模塊已被棄用,以支持importlib,但我還沒有嘗試過。 – 2012-06-21 14:59:39