py2exe到exe文件,它可以在我的电脑上运行但在其他电脑中显示DLL加载失败

时间:2015-10-08 18:49:30

标签: python opencv py2exe

我用模块opencv,Tkinter,PIL Numpy和一些buildin模块写了一个gui程序“test.py”。我使用py2exe为这个程序生成一个exe文件,exe文件在我的电脑上运行良好,但是当我在其他PC上试过时,它给了我

文件“test.py”,第8行 文件“cv2.pyc”,第12行 在__load中输入“cv2.pyc”,第10行 ImportError:DLL加载失败,无法找到指定的模块

我的电脑有Python是32位

1 个答案:

答案 0 :(得分:0)

  1. 在'site-packages'的cv2.pyd上使用Dependency Walker(http://www.dependencywalker.com/)。
  2. 查看库树所在的左上角。
  3. 普通图书馆有蓝色或灰色图标,左侧是红色图标库,如下所示:http://i.stack.imgur.com/YiEuD.png
  4. 查找具有红色标记的API,并记住带有红色图标的库的父库名称。红旗表示父库需要一些API,底层库中不存在这些API。在我的例子中,带有红色图标的库是'kernel32.dll',它的父库是msvcr90.dll,tbb.dll和来自'winsxs'的库,其名称被遮盖了。
  5. 通常可以通过获取正确版本的父库来解决问题。例如,您尝试在Windows XP上使用为Windows Vista编译的DLL。此DLL导入'InitializeCriticalSectionEx'API,在Windows XP的'kernel32.dll'中不存在。获取DLL的XP版本或使用“InitializeCriticalSection”而不是“Ex”重新编译它将解决问题。另一个例子:您正在使用OpenCV编译用于Qt 4.8.4和PyQt4,其中包含Qt版本4.7。顺便说一下,cv2.pyd(这是一个DLL)会拒绝导入,因为你的OpenCV中所需的某些Qt API在4.7的DLL中是不可用的。解决方案是将Qt库版本4.8.4放入'%PYTHONHOME%\ Lib \ site-packages \ PyQt4'文件夹或PATH中。当我从git repo构建我自己的OpenCV版本时,我自己遇到了这个问题。