【问题标题】:py2exe with enthought and pandaspy2exe 与 enthought 和 pandas
【发布时间】:2013-09-23 01:07:35
【问题描述】:

我正在尝试使用 Enthought 使用 python py2exe 制作可执行文件。 program.py 以:

开头
import pandas as pd
import pyper as pr
r=pr.R(use_pandas=True)

setup.py如下:

from distutils.core import setup
import py2exe
import matplotlib
import sys
opts={"py2exe":{"bundle_files"}}
sys.argv.append('py2exe')
opts = {'py2exe': {"bundle_files" : 3, "includes" : [ "matplotlib.backends", "matplotlib.backends.backend_qt4agg", "pylab","numpy", "matplotlib.backends.backend_tkagg"], 'excludes':['_gtkagg', '_tkagg', '_agg2', '_cairo', '_cocoaagg', '_fltkagg', '_gtk', '_gtkcairo'], 'dll_excludes': ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll']}}
setup(console=['program.py'],zipfile=None,options=opts,data_files=matplotlib.get_py2exe_datafiles())

运行后:python setup.py py2exe 创建了 distbuild 两个文件夹。但是当启动 program.exe 我得到了这个:

Dll load failed: The specified module could not be found
Traceback (most recent call last):  
File "program.py", line 1, in module  
File "pandas\__init__.pyc", line 6, in module  
File "pandas\hashtable.pyc", line 12, in module  
File "pandas\hashtable.pyc", line 10, in module  
File "numpy.pxd.", line 157, in init pandas.hastable (pandas\hastable.c:19547)  
File "numpy\__init__.pyc", line 143, in module  
File "numpy\lib\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: The specified module could not be found** 

我在 64-Windows 7 上使用 Canopy 1.1.0 和 Pandas 0.12.0-2

感谢您的帮助。

【问题讨论】:

  • 您似乎在matplotlib.backends.backend_qt4agg opts = {'py2exe': {"bundle_files" : 3, "includes" : [ "matplotlib.backends", "matplotlib.backends.backend_qt4agg",... 之前缺少一个'"' 除此之外,您不需要包括numpypandas 吗?
  • 谢谢!我跑了"matplotlib.backends.backend_qt4agg"。使用 pandas 是因为 program.py 将 csv 文件导入为数据框。
  • 所以你是说这现在有效吗?如果是这样,我可以将其发布为答案
  • 不,它不起作用。还是一样的错误。

标签: python-2.7 numpy pandas py2exe enthought


【解决方案1】:

看起来py2exe 构建的.exe 可能缺少 Canopy (EPD) 随附的英特尔 MKL DLL。根据您拥有的 Canopy (EPD) 版本,NumPy DLL 可能与英特尔 MKL DLL 链接。这些 DLL 应该在 C:\Python27\Scripts 目录中(或者如果您在不同的地方安装了 EPD,则应该在相应的 Scripts 目录中)——查找文件名以 mk2 开头的 DLL。


编辑:上述路径仅适用于旧 EPD 版本。对于更新版本的 Canopy,DLLS 通常位于 C:\Users\<user>\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.1.0-1371-win-x86_64\Scripts 之类的地方

【讨论】:

  • mk2 DLL 位于 C:\Users\~\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.1.0.1371.win-x86\Scripts 中,但仍无法正常工作。但是问题已经用 pyinstaller 解决了。谢谢
  • 啊,谢谢。我错过了你说你使用 Canopy 1.1.0 的那一点; C:/Python27 路径对旧 EPD 有效。我会更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多