1

我想用来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 文件复制到与脚本文件相同的目录中,它就可以工作。我不知道为什么。

4

1 回答 1

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并由list of functions and variables模块展开。看来您可能需要使用dot (.) notation上述方法导入模块。

于 2016-07-16T14:23:41.287 回答