2013-02-10 244 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沒有導入相關的問題。