首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyinstaller无法导入scipy.signals

Pyinstaller无法导入scipy.signals
EN

Stack Overflow用户
提问于 2020-02-19 15:53:57
回答 1查看 347关注 0票数 1

尝试使用导入的模块scipy.signals从python scipt创建可执行文件。Pyinstaller运行良好,没有错误,但新的.exe文件给我错误,如下所示:

代码语言:javascript
复制
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文件中的行从

代码语言:javascript
复制
from scipy imports signals

代码语言:javascript
复制
import scipy

exec文件执行得很好。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-15 01:33:48

在打包使用xarray的脚本时,我遇到了类似的问题。解决方案是找出哪个包正在导入jupyter,并将其添加到排除模块列表中。在我的例子中,我排除了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

或者这个堆栈溢出问题,它有更多的信息:

How to remove/exclude modules and files from pyInstaller?

顺便说一句,你应该开始习惯于排除不必要的包,因为这可以极大地减少你捆绑的应用程序的大小,并提高性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60295416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档