파이썬에서 동적으로 가져온 모듈에 액세스 할 수 없습니다.동적으로 가져온 파이썬 모듈을 호출 할 수 없습니다.
내 전화 구문이 잘못되었거나 가져 오기가 제대로 작동하지 않습니다.
Python에서 동적 가져 오기를 처리하는 많은 주제가 stackoverflow.com에 있습니다. 그러나이 사이트의 코드를 다음과 같이 채택했습니다. https://www.daniweb.com/software-development/python/code/238387/really-simple-plugins-loader-import-all-modules-in-a-folder-in-one-swoop
폴더에있는 모든 모듈을 자동으로 가져 와서 사전을 반환합니다.
코드 : 성공적인 수입
import glob, imp
from os.path import join, basename, splitext
def importPluginModulesIn(dir):
return dict(_load(path) for path in glob.glob(join(dir,'[!_]*.py')))
def _load(path):
name, ext = splitext(basename(path))
return name, imp.load_source(name, path)
modules = importPluginModulesIn('modules_folder')
print modules
출력은 제안 : 수익률은 모든 에서 응답이 (
{'test_function': <module 'test_function' from 'modules_folder/test_function.py'>}
그러나
, 제안 된 접근 방법을 인쇄 안 : "완전한 테스트를.") :
modules['test_function'].__name__
누구든지이 문제를 해결하는 방법을 제안 했습니까? 감사합니다.
편집 : Martijn Pieters는 내가 실제로 모듈과 기능을 착각하고 있음을 알고있었습니다. (아래 의견을 참조하십시오.) 이제 제 질문은 실제로 내 코드의 프레임 안에서 test_function을 호출하여 모듈에 포함 된 것입니다 test_function.py?
EDIT2 : modules_folder에서 test_function.py의 내용 :
import time
def test_function():
print('Start.')
time.sleep(1)
print('Test complete.')
모듈을 가져 왔습니다. 왜 모듈 이름이'Test complete '라고 기대합니까? 모듈 이름을 다른 것으로 바꾸는 모듈은 무엇입니까? –
'Test complete'는 이름이 아닌 test_function의 인쇄물입니다! –
맞아요.하지만 기능이 아닌 ** 모듈 **이 있습니다! 그리고 당신은 그 모듈 객체의'__name__'에 접근하려고합니다, 이것은 어떤 함수 출력도 아닌 모듈 이름입니다. –