[英]Pyinstaller failed to import scipy.signals
嘗試使用導入的模塊 scipy.signals 從 python scipt 創建 exe 文件。 Pyinstaller 運行良好,沒有錯誤,但新的 .exe 文件給了我如下錯誤:
Failed to decode wchar_t from UTF-8
MultiByteToWideChar: ╬сырёЄ№ фрээ√ї, яхЁхфрээр яю ёшёЄхьэюьє т√чютє, ёыш°ъюь ьрыр.
share\jupyter\lab\staging\node_modules\.cache\terser-webpack-plugin\content-v2\sha512\2e\ba\cfce62ec1f408830c0335f2b46219d58ee5b068473e7328690e542d2f92f2058865c600d845a2e404e282645529eb0322aa4429a84e189eb6b58c1b97c1a could not be extracted!
但是當我從 py 文件中更改行時
from scipy imports signals
到
import scipy
exec 文件表現出色。 有什么建議?
打包使用xarray
的腳本時,我遇到了類似的問題。 解決方案是找出哪個包正在導入jupyter
,並將其添加到jupyter
-modules列表中。 就我而言,我排除了dask
,但在您的情況下,情況會有所不同。
我將使用--log-level DEBUG
重新運行您的 pyinstaller 命令以獲得更多日志信息,然后查看build/目錄中生成的日志文件。 如果您有graphviz或知道如何使用圖形,那么您可以分析.dot文件以了解安裝jupyter/IPython的軟件包。 如果您不知道如何使用graphviz ,沒問題,只需在瀏覽器中打開 html 文件即可。 該文件顯示了您的腳本導入的所有包,以及這些包導入和導入的所有包等。請注意,這是一個非常復雜的包 A 導入網絡......而包 A 是由... ,所以不要迷失在細節中。
這里的目標是找到從您的腳本到導致此問題的IPython/jupyter的導入路徑。 您想在對您的腳本來說合乎邏輯的任何地方停止此路徑。 在你的情況下,許多scipy
子包導入matplotlib.pyplot
,它導入IPython
,它導入最終導入jupyter_client
東西。 您希望通過排除其中一個包來盡早切斷從腳本到jupyter/IPython 的這條路徑。 您決定排除的包將取決於您的應用程序。
擺脫此錯誤的最簡單方法是通過排除matplotlib
來切斷從腳本到jupyter
的路徑。 但是,如果您在腳本中使用 matplotlib 來生成繪圖,則不能這樣做。 您將不得不選擇更下游的包。 最終你可以排除IPython
,這應該可以解決問題。 查看 pyinstaller 文檔以了解如何使用--exclude-module
參數:
https://pyinstaller.readthedocs.io/en/stable/usage.html#what-to-bundle-where-to-search
或者這個stackoverflow question有更多信息:
附帶說明一下,您應該開始習慣排除不必要的包,因為這可以大大減少捆綁應用程序的大小並提高性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.