Python / SciPy - 创建可执行文件

时间:2013-03-12 16:45:20

标签: python scipy py2exe pyinstaller cx-freeze

我有一个使用SciPy的简短python脚本,它运行完美,但我无法将其转换为可执行文件。 我使用Windows 7 64位和Python 2.7,使用来自Christoph Golke的Numpy / SciPy版本(http://www.lfd.uci.edu/~gohlke/pythonlibs,cx_freeze和py2exe也在那里下载),一切都是64位。由于32位4GB RAM限制,需要64位。

我尝试了几件事:pyinstaller,py2exe和cx_freeze(再次是64bit)。每次运行可执行文件时,都会出现“导入错误:没有名为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的导入机制有关,但我不知道如何修复它。 如果您需要更多信息,请告诉我们。 谢谢大家!

1 个答案:

答案 0 :(得分:0)

从一个小小的谷歌搜索它似乎这是py2exe中的一个错误与scipy建议的解决方案是手动导入scipy模块:

from scipy.sparse.csgraph import _validation

看看这里: scipy with py2exe

希望这适用于你的情况。