2013-10-28 12 views
6

Ho problemi nel congelare un mio programma. L'ho ristretto al modulo scipy. Il porgramm che sto cercando di congelare è:Utilizzo di CX_Freeze con Scipy: scipy.special._ufuncs.py

from scipy import signal 
signal.hann(1000) 

mio script di installazione è:

import sys 
from cx_Freeze import setup, Executable 

build_exe_options = {} 

base = None 
if sys.platform == "win32": 
    base = "Win32GUI" 

setup( name = "Some name", 
     version = "1.0", 
     author="My name", 
     description = "My GUI application!", 
     options = {"build_exe": build_exe_options}, 
     executables = [Executable("Script_Name.py", base=base)]) 
            # ^CHANGE THIS NAME!!! 

Ecco un picture of the error message. Ho anche provato compresa scipy.signal nel file di setup come

build_exe_options = {"includes":"scipy.signal"} 

ma non ho fatto nulla di buono. Mi aiuti per favore.

+1

In [questa domanda] (http://stackoverflow.com/questions/19594567/importerror-when-using-cx-freeze-with-scipy), il richiedente ha rilevato che la ridenominazione della libreria nella directory di build l'ha corretta. Hai un file chiamato 'scipy.special._ufuncs.pyd' (o' .dll') nella directory di build? Puoi provare a rinominarlo semplicemente in "_ufuncs.pyd' (o' .dll')? –

+0

L'ho risolto copiando libmmd.dll e libifcoremd.dll da numpy \ core – Kknd

risposta

8

Ho avuto un problema simile che potrebbe essere risolto facendo in modo che:

1 La directory build contiene un file chiamato _ufunc.pyd (invece di scipy.special._ufuncs.pyd come detto sopra). È possibile raggiungere questo specificando i build_exe_options:

build_exe_options = { 'packages': ['scipy'], 
        "include_files": [('path2python\\Lib\\site-packages\\scipy\\special\\_ufuncs.pyd','_ufuncs.pyd')]} 

2 Fare in modo che tutte le DLL utilizzate da ufunc.pyd sono anche nella directory di compilazione. Nel mio caso libifcoremd.dll adn libmmd.dll stavano fallendo. Puoi controllare con dependencywalker

Spero che questo ti aiuti.

Problemi correlati