2017-11-09 1 views
1

ユーザーは、いくつかの値をグローバル変数として使用して、独自の最小限のスクリプトファイルを作成できます。
bar.py(main.pyと同じディレクトリ)グローバル変数を使用したファイルパスからのモジュールのロード

def bar(x): 
    return f'bar({x})' 

(おそらく遠くmain.pyから)foo.py

は基本的に、私はこのような何かをしたいです

b = bar('hi') #I want bar to be a global variable in this file 
def foo(x): 
    return f'{x}: foo({b})' 

main.py(私はSebastian's answer on how to import modulesを使用しました)

import importlib.util 
from bar import bar 

spec = importlib.util.spec_from_file_location("", r"/path/to/foo.py") #side question: does the name parameter have any effect on the code? 
fooModule = importlib.util.module_from_spec(spec) 
spec.loader.exec_module(fooModule) #<---somehow bring bar into foo's globals 

print(fooModule.foo('kevin')) 

ご協力いただきありがとうございます。

編集:私は答えを見つけたロード時間

答えて

0

オーケーでグローバルなバーを確実にするための要件を変更しました。これは、ビット奇妙だが、あなたはロードとFOO

main.py

import importlib.util 
from bar import bar 

spec = importlib.util.spec_from_file_location("", r"/path/to/foo.py") 
fooModule = importlib.util.module_from_spec(spec) 
fooModule.bar = bar #<---- 
spec.loader.exec_module(fooModule) 

print(fooModule.foo('kevin')) 
のexcecution間の値 としてバーを設定する必要があります
関連する問題