10

这是我的第一篇文章,所以请放轻松。我的问题与此处类似,但我无法使其正常工作,尽管我真的尝试过:“ py2exe with enthought and pandas ”。

分别安装了两个版本的python(x84-64,x32)和库后,我继续使用py2exe制作python脚本的可执行文件。我不得不下载丢失的 dll 文件:msvcp90.dll、libiomp5md.dll、libifcoremd.dll、libmmd.dll。
我创建的 Exe 文件返回错误并生成一个日志文件 - 对于 x32 和 x64 python&libraries 不同。

对于 32 位 python&libraries,我得到了以下日志文​​件(取决于我从哪个 numpy 库安装:http ://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy )

对于 numpy-1.8.0-win32-superpack-python2.7 我收到了以下信息:

File "gui.py", line 7, in <module>
File "pyqtgraph\__init__.pyc", line 177, in <module>
File "pyqtgraph\__init__.pyc", line 167, in importAll
File "pyqtgraph\__init__.pyc", line 159, in importModules
Traceback (most recent call last):
File "gua.py", line 7, in <module>
File "pyqtgraph\__init__.pyc", line 180, in <module>
File "pyqtgraph\imageview\__init__.pyc", line 6, in <module>
File "pyqtgraph\imageview\ImageView.pyc", line 20, in <module>
File "pyqtgraph\imageview\ImageViewTemplate_pyqt.pyc", line 159, in <module>
File "pyqtgraph\widgets\PlotWidget.pyc", line 10, in <module>
File "pyqtgraph\graphicsItems\PlotItem\__init__.pyc", line 1, in <module>
File "pyqtgraph\graphicsItems\PlotItem\PlotItem.pyc", line 32, in <module>
File "pyqtgraph\graphicsItems\PlotDataItem.pyc", line 4, in <module>
File "pyqtgraph\graphicsItems\PlotCurveItem.pyc", line 4, in <module>
File "scipy\stats\__init__.pyc", line 324, in <module>
File "scipy\stats\stats.pyc", line 242, in <module>
File "scipy\special\__init__.pyc", line 531, in <module>
File "scipy\special\_ufuncs.pyc", line 12, in <module>
File "scipy\special\_ufuncs.pyc", line 10, in __load
File "_ufuncs.pyx", line 1, in init scipy.special._ufuncs (scipy\special\_ufuncs.c:19840)
ImportError: No module named _ufuncs_cxx

对于 numpy-MKL-1.8.0.win32-py 2.7:

Traceback (most recent call last):
File "gui.py", line 2, in <module>
File "numpy\__init__.pyc", line 154, in <module>
File "numpy\add_newdocs.pyc", line 9, in <module>
File "numpy\lib\__init__.pyc", line 13, in <module>
File "numpy\lib\polynomial.pyc", line 17, in <module>
File "numpy\linalg\__init__.pyc", line 48, in <module>
File "numpy\linalg\linalg.pyc", line 23, in <module>
File "numpy\linalg\lapack_lite.pyc", line 12, in <module>
File "numpy\linalg\lapack_lite.pyc", line 10, in __load
ImportError: DLL load failed: %1 is not a valid Win32 application.

对于 numpy-MKL-1.7.2rc1.win32-py2.7 我收到如上,但成倍增加。

对于 64 位 python&libraries,我得到了以下内容,与 scipy 和 numpy 版本无关:

File "gui.py", line 7, in <module>
File "pyqtgraph\__init__.pyc", line 177, in <module>
File "pyqtgraph\__init__.pyc", line 167, in importAll
File "pyqtgraph\__init__.pyc", line 159, in importModules
Traceback (most recent call last):
File "pyqtgraph\__init__.pyc", line 155, in importModules
File "pyqtgraph\graphicsItems\PlotDataItem.pyc", line 4, in <module>
File "pyqtgraph\graphicsItems\PlotCurveItem.pyc", line 4, in <module>
File "scipy\stats\__init__.pyc", line 324, in <module>
File "scipy\stats\stats.pyc", line 242, in <module>
File "scipy\special\__init__.pyc", line 531, in <module>
File "scipy\special\_ufuncs.pyc", line 12, in <module>
File "scipy\special\_ufuncs.pyc", line 10, in __load
File "_ufuncs.pyx", line 1, in init scipy.special._ufuncs (scipy\special\_ufuncs.c:19992)
ImportError: No module named _ufuncs_cxx

我在 ..\build\bdist.win-amd64\winexe\collect-2.7\scipy\special 中有一些 ufuncs 文件,但我不确定它是如何工作的或应该如何工作。

那么我该怎么做才能使这些 .exe 正常工作呢?最好是与 64 位 python 一起使用的那个,因为通过在 SciTe 中使用 32 位 python 运行代码来打开程序需要很长时间并且内存过载。

编辑:

从 setup.py 中删除后 import numpy, pyqtgraph, scipy,我得到以下错误日志文件:

File "gui.py", line 7, in <module>
File "pyqtgraph\__init__.pyc", line 177, in <module>
File "pyqtgraph\__init__.pyc", line 167, in importAll
File "pyqtgraph\__init__.pyc", line 159, in importModules
Traceback (most recent call last):
File "pyqtgraph\__init__.pyc", line 155, in importModules
File "pyqtgraph\graphicsItems\PlotDataItem.pyc", line 4, in <module>
File "pyqtgraph\graphicsItems\PlotCurveItem.pyc", line 2, in <module>
File "scipy\fftpack\__init__.pyc", line 97, in <module>
File "scipy\fftpack\basic.pyc", line 12, in <module>
File "scipy\fftpack\_fftpack.pyc", line 12, in <module>
File "scipy\fftpack\_fftpack.pyc", line 10, in __load
ImportError: DLL load failed: %1 is not a valid Win32 application.
4

3 回答 3

12

PyInstaller 比 Py2exe 更成功。在 PyInstaller 中,通过显式添加引用来解决问题:

pyinstaller myscript.py --hidden-import=scipy.special._ufuncs_cxx

PyInstaller 还负责 matplotlib imbroglio 和 Visual Studio DLL。

于 2014-03-19T00:06:16.003 回答
1

从 distutils.core 导入设置

导入py2exe

设置(控制台=['hello.py'])

编辑:不要在此处包含任何其他库/模块

NEXT 在 cmd:

python hello.py py2exe

于 2013-11-25T10:21:48.147 回答
1

我在使用 py2exe 创建 .exe 文件时收到了相同的错误消息

File "_ufuncs.pyx", line 1, in init scipy.special._ufuncs (scipy\special\_ufuncs.c:22830)

它通过添加scipy.special._ufuncs_cxxincludessetup.py 中的选项来解决。这就是我所拥有的。

from distutils.core import setup
import py2exe
import numpy

setup(
    console=['hello.py'],
    options={
        'py2exe': {
            r'includes': [r'scipy.sparse.csgraph._validation',
                          r'scipy.special._ufuncs_cxx']
        }
    }
)

请注意,它包括一些其他设置以防止与 numpy/scipy 相关的错误。

  • 导入 numpy
  • 包括scipy.sparse.csgraph._validation基于此答案
于 2014-07-15T12:07:35.357 回答