1

完璧に動作するSciPyを使用する短いpythonスクリプトがありますが、実行可能ファイルに変換するのに問題があります。私はWindows764ビットとPython2.7を使用しており、ChristophGolkeのNumpy/ SciPyバージョン(http://www.lfd.uci.edu/~gohlke/pythonlibs、cx_freeze、py2exeもダウンロードされています)、すべて64ビットです。32ビットの4GBRAM制限のため、64ビットが必要です。

私はいくつかのことを試しました:pyinstaller、py2exe、cx_freeze(ここでも64ビット)。実行可能ファイルを実行するたびに、「インポートエラー:XXXという名前のモジュールがありません」というメッセージが表示されます。ここで、XXXはさまざまなもの(_validation、_csr、None、multiarray)に相当します。py2exeを使用して、「ImportError:DLLの読み込みに失敗しました:%1は有効なWin32アプリケーションではありません」というメッセージが表示されるように管理しました。

私はこの種のエラーを検索し、さまざまなモジュールを含めてみました(ここでも、上記の3つのスクリプトすべてを使用)が、それでも同じエラーです。

私のスクリプト:

#!/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のインポートメカニズムに関係していると読みましたが、修正方法がわかりません。さらに詳しい情報が必要な場合は、お知らせください。みんなありがとう!

4

1 に答える 1

0

少しグーグルで調べたところ、これは scipy を使用した py2exe のバグであると思われます。推奨される解決策は、scipy モジュールを手動でインポートすることです。

from scipy.sparse.csgraph import _validation

ここを見てください: py2exeを使ったscipy

これがあなたの場合にうまくいくことを願っています。

于 2013-03-12T18:52:40.403 に答える