2016-07-16 7 views
0

동적으로 모듈을 가져 오려면 importlib.import_module을 사용하고 싶습니다. 내 코드는 다음과 같습니다 :importlib.import_module을 사용하여 모듈을 가져올 수 없습니다.

import os 
import importlib 

os.chdir('D:\\Python27\\Lib\\bsddb') 
m = importlib.import_module('db') 
print dir(m) 

저는 이것을 파이썬 콘솔에서 성공적으로 할 수 있습니다.

Traceback (most recent call last): 
File "test.py", line 5, in <module> 
    m = importlib.import_module("db") 
File "D:\Python27\lib\importlib\__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named db 

을하지만 스크립트 파일과 디렉토리에 동일한 db.py 파일을 복사 할 경우, 그것을 작동 :하지만 파일 C:\Users\Administrator\Desktop>python test.py에서이 코드를 실행하면 작동하지 않을 수 있습니다. 나는 이유를 알 수 없다.

+0

폴더 구조가 어떻게 보이는지 보여 줄 수 있습니까? 그리고 db는 python 파일이나 폴더입니까? 추가 세부 정보를 입력하십시오. – Pant

+0

@SarvagyaPant 안녕하세요 Sarvagya,로드하려고하는 모듈은 Python Standard Lib에 있습니다. –

답변

0

편집 : 콘솔에서 이전 코드를 테스트 한 결과 작동했습니다. 그러나 코드를 다시 수정했습니다. 내가 직접 D drivebsddb 모듈을 보관하고 다시 코드를 변경 :

import os 
os.chdir("D:\\") 
import importlib 
m = importlib.import_module("bsddb.db") 
print len(dir(m)) 
print dir(m) 

319 결과와 모듈 exponsed list of functions and variables. 위와 같이 dot (.) notation을 사용하여 모듈을 가져와야 할 수도 있습니다.

+0

이 코드가 들어있는 스크립트 파일은 어느 경로에 저장합니까? 난 당신의 코드를 시도했지만 여전히 행운을 빌어 요. :-( –

+0

수정 된 코드가 작동 했습니까? – Pant

+0

예, 작동하지만이 줄'os.chdir (..)'은 제거 할 수 있습니다. 'bsddb.db'는 모듈의 전역 이름이어야합니다. 그렇지 않습니까? ? –

관련 문제