python scipy py2exe

python - scipy con py2exe



(2)

¡Problema resuelto! Muchas gracias joaquin En la búsqueda de dos días no había encontrado ese enlace de pyinstaller. Para futuros lectores, en las opciones para py2exe he añadido.

scipy.sparse.csgraph._validation

a los incluidos.

Recibo el siguiente mensaje de error usando python v2.7.3 y scipy v0.11.0 con py2exe v0.6.10 en una máquina de 64 bits usando versiones de 64 bits de los paquetes de Christoph Gohlke . Si alguien puede proporcionar sugerencias relevantes y útiles, lo agradecería enormemente. Aquí está el mensaje de error:

Traceback (most recent call last): File "test2.py", line 4, in <module> File "scipy/sparse/__init__.pyo", line 191, in <module> File "scipy/sparse/csgraph/__init__.pyo", line 146, in <module> File "scipy/sparse/csgraph/_shortest_path.pyo", line 12, in <module> File "scipy/sparse/csgraph/_shortest_path.pyo", line 10, in __load File "_shortest_path.pyx", line 18, in init scipy.sparse.csgraph._shortest_path (scipy/sparse/csgraph/_shortest_path.c:14235) ImportError: No module named _validation

Compilar y ejecutar el ejecutable funcionó en una vieja computadora portátil de 32 bits (con versiones de 32 bits de todo), así que creo que es posible que no esté incluyendo todo lo que necesito. Mi archivo test2.exe recién creado crea y muestra correctamente el mismo gráfico que se muestra en la página de Introducción de scipy''s . Aquí está mi script de prueba:

# test2.py # code is from the scipy web site example and works in Idle from scipy import sparse from scipy import optimize from scipy import special from numpy import * from pylab import * x = arange(0,10,0.01) for k in arange(0.5,5.5): y = special.jv(k,x) plot(x,y) f = lambda x: -special.jv(k,x) x_max = optimize.fminbound(f,0,6) plot([x_max], [special.jv(k,x_max)],''ro'') title(''Different Bessel functions and their local maxima'') show()

Y aquí está mi archivo setup.py:

# setup.py from distutils.core import setup import py2exe import os import matplotlib setup( windows=[{''script'': r''test2.py''}], data_files = matplotlib.get_py2exe_datafiles(), options = { ''py2exe'': { r''compressed'': True, r''optimize'': 2, r''includes'': [ r''matplotlib'', r''matplotlib.backends.backend_tkagg'', r''matplotlib.pyplot'', #r''mpl_toolkits'', r''pytz'' ], r''dll_excludes'': [r''MSVCP90.dll''], r''excludes'': [ ''_gtkagg'', ''_tkagg'', ''_agg2'', ''_cairo'', ''_cocoaagg'', ''_fltkagg'', ''_gtk'', ''_gtkcairo'', ''tcl'' ] } }, ) os.system("pause") # leaves the command prompt box open so I can read it

Tanto test2.py como setup.py residen en c: / python27 / y obtengo un test2.exe completado satisfactoriamente en la máquina de 64 bits. En una nota (probablemente) relacionada, puedo leer que scipy v0.11.0 introdujo nuevas herramientas de gráficos dispersos y sospecho que es donde el mensaje de error está intentando indicarme. ¿Me estoy perdiendo algo que necesito incluir explícitamente? Sería bueno si scipy tuviera una función get_py2exe_datafiles () como matplotlib para ayudar a agrupar las cosas correctamente.

Gracias de antemano por cualquier ayuda que pueda proporcionar y por leer hasta aquí.


Este parece ser un problema común para py2exe y pyinstaller con scipy 0.11.0 como se explica here .

La solución temporal dada en ese hilo es importar el archivo manualmente:

agregando los siguientes códigos a su programa

def dependencies_for_myprogram(): from scipy.sparse.csgraph import _validation

Problema resuelto para pyInstaller y py2exe

Alternativamente, puede intentar incluir este archivo con ''incluye''. Debería ser suficiente para que py2exe lo obtenga.