サイトを検索しようとしましたが、私の問題に対する答えが見つかりません:
mymodule.pyという名前のモジュールがあり、次のものが含まれているとします。
def a():
return 3
def b():
return 4 + a()
次に、次のように動作します。
import mymodule
print(mymodule.b())
ただし、モジュールの内容を動的に定義しようとすると、次のようになります。
import imp
my_code = '''
def a():
return 3
def b():
return 4 + a()
'''
mymodule = imp.new_module('mymodule')
exec(my_code, globals(), mymodule.__dict__)
print(mymodule.b())
次に、関数b()で失敗します。
Traceback (most recent call last):
File "", line 13, in <module>
File "", line 6, in b
NameError: global name 'a' is not defined
モジュール内の階層的な名前空間検索を保持する方法が必要です。これは、モジュールがディスク上に存在しない限り失敗するようです。
違いは何ですか?
ありがとう、ロブ。