2013-02-10 218 views
2

在我第一次尝试将我的python代码打包成一个.exe文件时,我遇到了使用scipy.weave模块打包和运行代码的问题。当我检查我的warnproject.txt,我看到1324线警告(几行包括下面)为PyInstaller包含python模块?

W: no module named numpy.negative (top-level import by scipy.weave.size_check) 
W: no module named numpy.asarray (top-level import by scipy.optimize.nonlin) 
W: no module named termios (top-level import by tty) 
W: no module named scipy.arange (conditional import by scipy.sparse.linalg.isolve.minres) 
W: no module named numpy.polyder (top-level import by scipy.signal.signaltools) 
W: no module named matplotlib.rcParams (top-level import by matplotlib.figure) 
etc... 

第一个问题:为什么会出现这么多的警告,而程序运行部分还好吗?

第二个问题:如何以正确的方式导入这些模块?在我的project.spec文件中,我写了exe = EXE(..., a.binaries + [('scipy.weave', 'C:\Python27\Lib\site-packages', 'PYMODULE')], ...),但它找不到该模块,并且不会打包任何文件?

+0

你的意思是你的程序部分运行正常? – placeybordeaux 2013-02-10 14:03:55

+0

@placeybordeaux该程序运行到'weave.inline'代码进入,它不会继续。 – MPA 2013-02-10 16:14:47

回答

1

一种方法是使用Analysis对象的hooks选项。 这迫使分析(编译依赖关系列表的人)认为钩子模块已经被导入,因此是必需的。

a = Analysis(['myscript.py'], hookspath='/my/priv/hooks') 

hooks文件是简单的文本文件。

另一方面,我有这样的警告吨,我的应用程序运行在Linux和Windows没有导入相关的问题。