我在我的代码中导入了cv2库,并通过GUI2EXE软件使用py2exe创建了一个可执行文件。
Py2exe创建了cv2.pyc文件,该文件在每次启动应用程序时运行,并创建错误“导入错误:DLL加载失败。无法找到指定的模块' at line mod = imp.load_dynamic( name ,path)。它还使其他文件如numpy.core_sort在运行时产生相同的错误。
我的问题是py2exe只在运行应用程序时运行cv2.pyc文件。它为什么这样做?它应该刚刚导入了cv2库。 cv2.pyc文件中的代码如下所示
def __load():
import imp, os, sys
try:
dirname = os.path.dirname(__loader__.archive)
except NameError:
dirname = sys.prefix
path = os.path.join(dirname, 'cv2.pyd')
#print "py2exe extension module", __name__, "->", path
mod = imp.load_dynamic(__name__, path)
## mod.frozen = 1
__load()
del __load
我的代码以这种方式调用库: -
import wx
import wx.lib.buttons
import numpy as np
import os
import cv2.cv as cv #Import functions from OpenCV
from numpy import *
from PIL import Image #python imaging library
答案 0 :(得分:0)
看着cv2.cpp它有#include "numpy/ndarrayobject.h"
所以看起来它加载numpy,这并不奇怪。
由于py2exe
没有看到c ++源代码,因此它不会检测到这一点。所以我认为"指定的模块"无法找到的是numpy。
在setup.py中添加以下行可以解决您的问题:
import numpy