我使用模块PyQt4,cv2(v.2.4.13),numpy(v.1.11.1)等编写应用程序。我使用Python(win32上的2.7.11),Windows7(x64)。
在Windows上编译(使用py2exe)之前,我的应用程序正常工作(从python运行)。
在setup.py中:
...
options = {
'py2exe': {
...
'compressed': True,
'includes': ['cv2', 'numpy', 'sip', 'lxml._elementpath', 'PyQt4.QtCore', 'PyQt4.QtGui' ],
'dll_excludes': ['MSVCP90.dll', 'w9xpopen.exe', 'Qwt.pyd', 'tcl85.dll', 'tk85.dll']
}
}
...
在Windows上编译并尝试启动应用程序(* .exe文件)后,系统会返回此错误:
文件“cv2.pyc”,第12行,在模块
中文件“cv2.pyc”,第10行,在__load
中ImportError:numpy.core.multiarray无法导入。
提出的例外情况:
import cv2
在名为'dist'的文件夹中有文件numpy.core.multiarray.pyd。 在library.zip中有文件cv2,文件夹numpy。
答案 0 :(得分:1)
<强>解决强>
问题出在py2exe部分的setup.py中。
我还将numpy-atlas.dll从C:\ Python27 \ Lib \ site-packages \ numpy \ core复制到site-packages以便成功构建。
setup.py:
excludes = [
'Tkconstants', 'Tkinter', 'tcl', '_ssl', 'bz2',
'_testcapi', 'pyexpat', 'select'
]
options = {
'py2exe': {
'compressed': True,
'excludes': excludes,
'includes': ['sip', 'lxml._elementpath', 'PyQt4.QtCore', 'PyQt4.QtGui', 'cv2', 'numpy'],
'dll_excludes': ['MSVCP90.dll', 'w9xpopen.exe', 'Qwt.pyd', 'tcl85.dll', 'tk85.dll', 'MSVCR90.DLL']
}
}
答案 1 :(得分:1)
我遇到了类似的问题,解决方案就像将图像文件移动到创建可执行文件的文件夹一样简单。这适用于py2exe和pyinstaller。