2013-10-28 18 views
6

我遇到了凍結我的程序的問題。我縮小到scipy模塊。我試圖凍結porgramm是:在Scipy中使用CX_Freeze:scipy.special._ufuncs.py

from scipy import signal 
signal.hann(1000) 

我的安裝腳本是:

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

這裏是一個picture of the error message。我也嘗試在設置文件中包含scipy.signal,因爲

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

但它沒有任何好處。請幫幫我。

+1

在[這個問題](http://stackoverflow.com/questions/19594567/importerror-when-using-cx-freeze-with-scipy)時,提問者發現,重命名庫中生成目錄固定它。你在build目錄下有一個名爲'scipy.special._ufuncs.pyd'(或'.dll')的文件嗎?你可以嘗試將它重命名爲'_ufuncs.pyd'(或'.dll')嗎? –

+0

我已經從numpy的\核心複製libmmd.dll和libifcoremd.dll固定它 – Kknd

回答

8

我有可能通過確保要解決類似的問題:

1 build目錄包含一個_ufunc.pyd文件命名(而不是scipy.special._ufuncs.pyd如上所述)。您可以通過指定build_exe_options實現這一點:

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

2確保通過ufunc.pyd使用的所有DLL文件也都在構建目錄。在我的情況下libifcoremd.dll和libmmd.dll失敗。你可以用dependencywalker

檢查這個,我希望這可以幫助你。