2015-09-21 9 views
6

Ho problemi a compilare un exe durante l'utilizzo di cx_freeze e scipy. In particolare, il mio script utilizzaScipy e CX_freeze - Errore durante l'importazione di scipy: non è possibile importare scipy mentre si è in una directory sorgente scipy

from scipy.interpolate import griddata 

Il processo di generazione sembra per completare con successo, tuttavia quando provo a fare funzionare l'exe compilato, ricevo il seguente messaggio.

Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module> 
    exec(code, m.__dict__) 
    File "gis_helper.py", line 13, in <module> 
    File "C:\Python27\lib\site-packages\scipy\__init__.py", line 103, in <module> 
    raise ImportError(msg) 
ImportError: Error importing scipy: you cannot import scipy while 
     being in scipy source directory; please exit the scipy source 
     tree first, and relaunch your python intepreter. 

Dopo aver guardato SciPy file di _init__.py \, v'è la seguente:

if __SCIPY_SETUP__: 
    import sys as _sys 
    _sys.stderr.write('Running from scipy source directory.\n') 
    del _sys 
else: 
    try: 
     from scipy.__config__ import show as show_config 
    except ImportError: 
     msg = """Error importing scipy: you cannot import scipy while 
     being in scipy source directory; please exit the scipy source 
     tree first, and relaunch your python intepreter.""" 
     raise ImportError(msg) 

Non sono del tutto sicuro di quello che è il problema qui però anche se sembra che le erros viene gettata perché c'è un problema con il file di configurazione scipy. Forse non è incluso nel processo di costruzione. Sono abbastanza alle prime armi e spero che qualcuno più esperto nel generare build con cxfreeze possa far luce su questo.

Per inciso, lo scipy in uso è stato installato dai binari here.

risposta

10

ho avuto lo stesso problema. Ho aggiunto questo codice alla setup.py generato da cx_freeze:

import scipy 
includefiles_list=[] 
scipy_path = dirname(scipy.__file__) 
includefiles_list.append(scipy_path) 

Poi, usato includefiles_list come parte del parametro build_exe:

build_options = dict(packages=[], include_files=includefiles_list) 

setup(name="foo", options=dict(build_exe=build_options)) 
+0

Grazie, ha funzionato, sfortunatamente ora si è spostato su altri errori. Concentrarsi su pyinstaller per il momento, ma grazie per il vostro aiuto. – Praxis

+0

Ho lo stesso problema. Tutto duro quando provo il tuo codice ottengo il seguente messaggio "ImportError: Nessun modulo chiamato 'C: \\ *** \\ *** \\ Python27 \\ lib \\ site-packages \\ scipy' – Poonuts

+0

Ho il stesso problema. Qualcuno può risolverlo? – CarMoreno

0

aggiungo lo stesso problema e risolto utilizzando fepzzz metodo e compresi alcuni pacchetti mancanti:

additional_mods = ['numpy.matlib', 'multiprocessing.process'] 
includefiles = [(r'C:\Anaconda3\Lib\site-packages\scipy')] 

setup(xxx, options={'build_exe': {'includes': additional_mods, 'include_files': includefiles}}) 

E utilizzando la versione 5.0.2 del pacchetto cx-Freeze, che ha risolto un errore durante l'importazione multiprocessing.process