py2exe с enthought и pandas

Опитвам се да направя изпълним файл с python, py2exe, използвайки Enthought. 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 бяха създадени двете папки dist и build. Но когато стартирах 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** 

Използвам Canopy 1.1.0 с Pandas 0.12.0-2 на 64-Windows 7

Благодаря за всяка помощ.


person Gaston Cissé    schedule 18.09.2013    source източник
comment
Изглежда, че пропускате '' преди matplotlib.backends.backend_qt4agg opts = {'py2exe': {"bundle_files" : 3, "includes" : [ "matplotlib.backends", "matplotlib.backends.backend_qt4agg",... Освен това не трябва ли да включвате numpy и pandas?   -  person EdChum    schedule 18.09.2013
comment
Благодаря! Тичах "matplotlib.backends.backend_qt4agg". pandas беше използвано, защото program.py импортира csv файл като рамка с данни.   -  person Gaston Cissé    schedule 18.09.2013
comment
И така, казвате ли, че това работи сега? Ако е така, мога да го публикувам като отговор   -  person EdChum    schedule 18.09.2013
comment
Не, не работи. Все същата грешка.   -  person Gaston Cissé    schedule 18.09.2013


Отговори (1)


Изглежда, че .exe, създаден от py2exe, може да липсват DLL файловете на Intel MKL, които идват с Canopy (EPD). В зависимост от това коя версия на Canopy (EPD) имате, NumPy DLL файловете може да бъдат свързани срещу Intel MKL DLL файловете. Тези DLL трябва да са в директория C:\Python27\Scripts (или съответната директория Scripts, ако сте инсталирали EPD на друго място) -- потърсете DLL файлове, чието име на файл започва с mk2.


РЕДАКТИРАНЕ: Горният път работи само за по-стари версии на EPD. За по-нова версия на Canopy, DLLS обикновено се намира някъде като C:\Users\<user>\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.1.0-1371-win-x86_64\Scripts

person Mark Dickinson    schedule 19.09.2013
comment
mk2 dLLs са в C:\Users\~\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.1.0.1371.win-x86\Scripts и все още не работи. Проблемът обаче е решен с pyinstaller. Благодаря - person Gaston Cissé; 20.09.2013
comment
Ах благодаря Пропуснах частта, в която казахте, че използвате Canopy 1.1.0; пътят C:/Python27 беше валиден за по-стари EPD. Ще актуализирам отговора. - person Mark Dickinson; 20.09.2013