2013-03-12 101 views
1

我有一個使用SciPy的簡短python腳本,它運行完美,但我無法將其轉換爲可執行文件。 我使用Windows 7 64位和Python 2.7,與Christoph Golke的Numpy/SciPy版本(http://www.lfd.uci.edu/~gohlke/pythonlibs,cx_freeze和py2exe也在那裏下載),一切都是64位。 64位是需要的,因爲32位4GB內存限制。Python/SciPy - 創建可執行文件

我嘗試了幾件事情:pyinstaller,py2exe和cx_freeze(再次64位)。每次運行可執行文件時,都會出現「Import Error:No module named XXX」,其中XXX表示不同的事物(_validation,_csr,None,multiarray)。 使用py2exe,我管理它得到一個「ImportError:DLL加載失敗:%1不是有效的Win32應用程序」。

我搜索了這種錯誤,並嘗試了包括不同的模塊(同上面提到的所有三個腳本一樣),但仍然是同樣的錯誤。

我的腳本:

#!/usr/bin/python 

# easy.py 

import scipy as sp 
from scipy.io import wavfile 
from scipy import signal 
import numpy as np 

rate,data = sp.io.wavfile.read('2.wav') 
if data.ndim >= 2: 
    data = data[ : ,0] 
min = data.min() 
if min < 0: 
    data= np.multiply(data,0.5) 
    data= np.add(data,min/-2) 

rate2,data2 = sp.io.wavfile.read('MVI_1849.wav') 
if data2.ndim >= 2: 
    data2 = data2[ : ,0] 
min2 = data2.min() 
if min2 < 0: 
    data2= np.multiply(data2,0.5) 
    data2= np.add(data2,min2/-2) 
data2=data2[::-1] 

corr = signal.fftconvolve(data,data2) 
max = np.argmax(corr) 
offset = float(max-len(data2))/float(rate) 

print(offset) 

我讀到這與NumPy的/ SciPy的進口機制的事,但我不知道如何解決它。 如果您需要更多信息,請告訴我。 感謝大家!

回答

0

從它周圍的小Googling,似乎這是py2exe與SciPy的建議的解決方案的一個錯誤是導入手動SciPy的模塊:

from scipy.sparse.csgraph import _validation 

看一看這裏: scipy with py2exe

希望這適用於你的情況。

+0

我這樣做,然後出現另一個錯誤:「ImportError:DLL加載失敗:%1不是有效的Win32應用程序」。我擁有一切64位並檢查了以下3個線程(前3個結果):http://tinyurl.com/cva3mj6 – 2013-03-12 19:29:47

+0

爲什麼不嘗試手動加載Scipy的所有依賴關係? – Tkingovr 2013-03-12 19:39:48