2017-11-09 6 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 사이의 값 로 줄을 설정해야