Что означает ImportError в Python? - PullRequest
       23

Что означает ImportError в Python?

1 голос
/ 21 февраля 2011

Я пытаюсь импортировать модуль:

import cv

И я получаю следующее сообщение об ошибке:

ImportError: DLL load failed: The specified module could not be found.

Но если я попытаюсь импортировать библиотеку, которая определенно не существует, например:

import blabla

Я получаю:

ImportError: No module named blabla

Итак, я заключаю, что библиотека cv не полностью скрыта. Python умеет что-то видеть. Кто-нибудь знает, что Python может видеть, а чего не хватает?

ДОБАВЛЕНО

Traceback (most recent call last):
File "<stdin>", line 1, in <module>

ДОБАВЛЕНО 2

В каталоге, который содержит библиотеку cv, есть подкаталог (C:\OpenCV2.2\bin) со множеством *.dll файлов. Итак, я попробовал:

import sys
sys.path.append("C:\OpenCV2.2\bin")

и я до сих пор получаю «Ошибка загрузки DLL». Есть ли способ узнать, какой именно файл "dll" отсутствует. Я имею в виду, Python пытается найти определенный файл DLL (скажем, cv.dll) и не может найти его?

Ответы [ 3 ]

3 голосов
/ 27 февраля 2011

В данном конкретном случае «сбой загрузки DLL» вызван использованием Python 2.6 с OpenCV 2.2. Вы должны использовать Python 2.7, потому что cv.pyd связан с python27.dll.

1 голос
/ 21 февраля 2011

ImportError может сбивать с толку, потому что он может генерироваться, когда модуль, который вы пытаетесь импортировать, пытается импортировать что-то еще, и поскольку весь код импорта написан на C, вы не всегда получаете полезную обратную трассировку.

В этом случае выглядит так, как если бы cv сам был DLL, или какой-то модуль, который он пытается импортировать, был DLL. DLL не будет загружаться, потому что это зависит от какой-то другой DLL, которая отсутствует в вашей системе.

Если вы не можете легко увидеть, что отсутствует зависимость, вы можете попробовать использовать инструмент Microsoft * зависит , чтобы выяснить это.

0 голосов
/ 21 февраля 2011

Скорее всего, Python найдет модуль cv чистого Python, который не может найти необходимую ему DLL.

...