2016-07-16 149 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) 

我可以成功地在Python控制檯中。但是,如果我在一個文件C:\Users\Administrator\Desktop>python test.py運行這些代碼,它不能工作:

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文件複製到該目錄一樣的腳本文件,它的工作原理。我無法弄清楚爲什麼。

+0

你能展示你的文件夾結構是怎樣的嗎?而db是一個python文件或文件夾?請提供更多詳細信息。 – Pant

+0

@SarvagyaPant Hi Sarvagya,我試圖加載的模塊是在Python標準庫中。 –

回答

0

編輯:我已經測試了控制檯中的早期代碼,它的工作。但是,我已經修改了代碼。我不停的bsddb模塊直接D drive,再次改變了代碼:

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'應該是模塊的全局名稱,不是嗎? ? –