2013-10-28 6 views
6

Ich habe Probleme beim Einfrieren eines Programms von mir. Ich habe es auf das Scipy-Modul beschränkt. Die porgramm ich einzufrieren versuche ist:Verwendung von CX_Freeze mit Scipy: scipy.special._ufuncs.py

from scipy import signal 
signal.hann(1000) 

Mein Setup-Skript ist:

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!!! 

hier ein picture of the error message ist. Ich habe auch versucht, scipy.signal in der Setup-Datei als

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

zu integrieren, aber es hat nichts Gutes getan. Bitte hilf mir.

+1

In [dieser Frage] (http://stackoverflow.com/questions/19594567/importerror-when-using-cx-freeze-with-scipy), der Fragesteller gefunden, dass das Umbenennen der Bibliothek im Build-Verzeichnis es behoben. Haben Sie eine Datei namens 'scipy.special._ufuncs.pyd' (oder' .dll') im Build-Verzeichnis? Können Sie versuchen, es in '_ufuncs.pyd' (oder' .dll') umzubenennen? –

+0

Ich habe es behoben, indem ich libmmed.dll und libifcoremd.dll aus numpy \ core kopiert habe – Kknd

Antwort

8

Ich hatte ein ähnliches Problem, das, indem sichergestellt wird gelöst werden konnte, dass:

1 Die Build-Verzeichnis eine Datei mit dem Namen _ufunc.pyd (statt scipy.special._ufuncs.pyd wie oben erwähnt) enthält. Sie können dies erreichen, indem die build_exe_options Angabe:

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

2 sicher zu machen, dass alle von ufunc.pyd verwendet dlls auch im Build-Verzeichnis. In meinem Fall waren libifcoremd.dll und libmmd.dll fehlerhaft. Sie können dies mit dependencywalker

überprüfen Ich hoffe, das hilft Ihnen aus.