Cx_freeze ImportError ningún módulo llamado scipy

Buen día a todos,

Tengo problemas para utilizar cx_Freeze en un código en el que estoy trabajando para convertir a un archivo .exe.

Cuando ejecuto cx_Freeze obtengo el siguiente ImportError que no hay ningún módulo llamado scipy

running install running build running build_exe Traceback (most recent call last): File "setup.py", line 25, in  executables = executables File "C:\Python34\lib\site-packages\cx_Freeze\dist.py", line 362, in setup distutils.core.setup(**attrs) File "C:\Python34\lib\distutils\core.py", line 148, in setup dist.run_commands() File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands self.run_command(cmd) File "C:\Python34\lib\distutils\dist.py", line 974, in run_command cmd_obj.run() File "C:\Python34\lib\distutils\command\install.py", line 539, in run self.run_command('build') File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command) File "C:\Python34\lib\distutils\dist.py", line 974, in run_command cmd_obj.run() File "C:\Python34\lib\distutils\command\build.py", line 126, in run self.run_command(cmd_name) File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command) File "C:\Python34\lib\distutils\dist.py", line 974, in run_command cmd_obj.run() File "C:\Python34\lib\site-packages\cx_Freeze\dist.py", line 232, in run freezer.Freeze() File "C:\Python34\lib\site-packages\cx_Freeze\freezer.py", line 619, in Freeze self.finder = self._GetModuleFinder() File "C:\Python34\lib\site-packages\cx_Freeze\freezer.py", line 378, in _GetModuleFinder finder.IncludePackage(name) File "C:\Python34\lib\site-packages\cx_Freeze\finder.py", line 686, in IncludePackage module = self._ImportModule(name, deferredImports) File "C:\Python34\lib\site-packages\cx_Freeze\finder.py", line 386, in _ImportModule raise ImportError("No module named %r" % name) ImportError: No module named 'scipy' 

Puedo confirmar que tengo Scipy 0.16 instalado en mi sistema, que funciona cuando lo importo a otro código de Python. Actualmente estoy ejecutando python 3.4 en Windows. El siguiente es mi archivo setup.py para cx_Freeze.

 import cx_Freeze import sys import matplotlib base = None if sys.platform == 'win32': base = 'Win32GUI' executables = [cx_Freeze.Executable('fractureGUI.py', base=base, icon='star_square.ico')] packages = ['tkinter','matplotlib','scipy'] include_files = ['star_square.ico', 'C:\\Python34\\Lib\\site-packages\\scipy'] cx_Freeze.setup( name = 'FracturePositionMonteCarlo', options = {'build_exe': {'packages':packages, 'include_files':include_files}}, version = '0.01', description = 'Fracture Depth Monte Carlo', executables = executables ) 

La siguiente es la sección de importación de mi script principal, fractureGUI.py.

 import scipy from random import random import matplotlib import matplotlib.pyplot as plt import matplotlib.mlab as mlab matplotlib.use('TkAgg') from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib import style style.use('ggplot') import tkinter as tk from tkinter import ttk, filedialog import sys import json 

Si alguien tiene alguna idea de por qué cx_Freeze no puede encontrar scipy, por favor hágamelo saber. Intenté agregar el filepath a scipy debajo de include_files pero no hizo ninguna diferencia.

Saludos cordiales,

Jonnyishman

Tuve exactamente el mismo problema. Encontré la solución aquí: https://bitbucket.org/anthony_tuininga/cx_freeze/issues/43/import-errors-when-using-cx_freeze-with

Encuentra el archivo hooks.py en la carpeta cx_freeze. Cambie la línea 548 de finder.IncludePackage (“scipy.lib”) a finder.IncludePackage (“scipy._lib”).

Deje la entrada “scipy” en los paquetes y elimine ‘C: \ Python34 \ Lib \ site-packages \ scipy’ en include_files.