Не удается импортировать модуль с помощью 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 в каталог, аналогичный файлу скрипта, он будет работать. Я не могу понять, почему.

1 ответ

Решение

РЕДАКТИРОВАТЬ: я проверил предыдущий код в консоли, и он работал. Тем не менее, я снова изменил код. Я держал 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 как выше.

Другие вопросы по тегам