2016-07-16 151 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'应该是模块的全局名称,不是吗? ? –