0

使用したいファイルの 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) が発生します。

何かご意見は?

4

2 に答える 2

2

import_moduleモジュールオブジェクト自体を返します。使用できる名前に割り当てるのはあなた自身の責任です。だからあなたの場合、それは

scenario1424 = importlib.import_module('scenarios.scenario1424')

于 2012-10-10T22:06:13.840 に答える
0

サブディレクトリに__init__.pyファイルが含まれていますか?

Python は__init__.py、ディレクトリがモジュールかどうかを判断するために を使用します。

于 2012-10-10T22:10:24.643 に答える