Pyinstaller无法导入scipy.signals

2024-10-01 11:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试使用导入的模块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文件执行得很好。 有什么建议吗


Tags: 模块文件tofrom错误scipyexeutf
1条回答
网友
1楼 · 发布于 2024-10-01 11:27:05

在打包使用xarray的脚本时,我遇到了类似的问题。解决方案是找出导入jupyter的包,并将其添加到排除模块的列表中。在我的情况下,我排除了,但在你的情况下,情况会有所不同

我将使用 log-level DEBUG重新运行pyinstaller命令以获取更多日志信息,然后查看build/目录中生成的日志文件。如果您有graphviz,或者知道如何使用graphs,那么您可以分析.dot文件以了解安装jupyter/IPython的软件包。如果您不知道如何使用graphviz,没问题,只需在浏览器中打开html文件即可。此文件显示脚本导入的所有程序包,以及这些程序包导入的所有程序包和导入的程序包等。请注意,这是一个非常复杂的程序包a导入的web包装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

或者这个问题有更多信息:

How to remove/exclude modules and files from pyInstaller?

另一方面,你应该开始适应排除不必要的软件包,因为这可以大大减少捆绑应用程序的大小并提高性能

相关问题 更多 >