使用したいファイルの 1 つ下のディレクトリにあるファイル内の関数にアクセスしようとしています。ユーザーがどの機能を使用したいかを実行前に知ることができないため、これを動的な方法で実行しようとしています。
たとえば、ユーザーに特定のシナリオを尋ねます。ユーザーが 1424 シナリオを要求した場合、'scenarios/scenario1424.py' ファイル内の関数にアクセスしたいと思います。
importlib.import_module(...) を使用してこれを実行しようとしていますが、ファイル モジュールを正常にインポートしているように見えても、これらの関数にアクセスできないようです。
ディレクトリ構造:
code/
- main.py
scenarios/
- __init__.py (empty)
- scenario1420.py
- scenario1421.py
- scenario1424.py
シナリオ ファイル内には、次のように定義された一連のメソッドがあります。
def run():
.......
def compute():
.......
importlib.import_module('scenarios.scenario1424')
(returns )を使用してモジュールをインポートできた<module 'scenarios.scenario1424' from 'scenarios/scenario1424.pyc'>
ようですが、 のような関数にアクセスしようとするとscenario1424.run()
、 NameError ( NameError: name 'scenario1424' is not defined
) が発生します。
何かご意見は?