3
を失敗:Pythonの__import__がそうように私は、ディレクトリ構造を持っている
|- project
|- commands.py
|- Modules
| |- __init__.py
| |- base.py
| \- build.py
\- etc....
私は__init__.py
commands = []
hooks = []
def load_modules():
""" dynamically loads commands from the /modules subdirectory """
path = "\\".join(os.path.abspath(__file__).split("\\")[:-1])
modules = [f for f in os.listdir(path) if f.endswith(".py") and f != "__init__.py"]
print modules
for file in modules:
try:
module = __import__(file.split(".")[0])
print module
for obj_name in dir(module):
try:
potential_class = getattr(module, obj_name)
if isinstance(potential_class, Command):
#init command instance and place in list
commands.append(potential_class(serverprops))
if isinstance(potential_class, Hook):
hooks.append(potential_class(serverprops))
except:
pass
except ImportError as e:
print "!! Could not load %s: %s" % (file, e)
print commands
print hooks
に次のコードを持っている私は、適切なコマンドをロードするために__init__.py
を取得しようとしています私はいつもmodule = __import__(file.split(".")[0])
でImportErrorをヒットしましたが、__init__.py
とbase.pyなどはすべて同じフォルダにあります。私は、モジュールファイルのどれもに何も必要がないことを確認しました__init__.py
、私は本当に何をするのを失っている。
'__import__'には、特に' fromlist'と覚えておかなければならない重要な悩みがあります。それを探して、あなたがそれを理解できるかどうかを見てください。 –
'path = os.path.dirname(os.path.abspath(__ file __))'(より正確で偶然にクロスプラットフォーム) –
'load_modules()'がどこからどのように呼び出されていますか? – martineau