可执行文件的cv加载
我在代码中导入了cv2库,并通过GUI2EXE软件使用py2exe制作了一个可执行文件。
py2exe创建了一个cv2.pyc文件,每次启动应用程序时都会运行这个文件,但在执行到mod = imp.load_dynamic(name,path)这一行时,出现了“导入错误:DLL加载失败。找不到指定的模块”的错误。它还创建了其他文件,比如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
1 个回答
0
在查看cv2.cpp文件时,发现里面有一行代码#include "numpy/ndarrayobject.h"
,这说明它加载了numpy库,这一点并不让人意外。因为py2exe
看不到C++的源代码,所以它无法检测到这一点。因此,我认为“指定的模块”找不到的原因是numpy。
在你的setup.py文件中添加以下这一行应该能解决你的问题:
import numpy