使用PyInstaller编译文件后执行时出现错误"没有名为'scipy._lib.messagestream'的模块"。

10

我正尝试使用pyinstaller编译我们的代码,升级到Python 3.6并同时移植到Scipy 1.0.0。我正在64位Win7机器上工作。程序本身运行良好,pyinstaller没有错误,但当我尝试运行构建的exe文件时,它给出了这个错误:

https://bitbucket.org/OES_muni/massiveoes
Traceback (most recent call last):   File "massiveOES\GUI.py", line 23, in <module>   File "c:\users\petr\envs\py1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "massiveOES\__init__.py", line 1, in <module>   File "c:\users\petr\envs\py1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "massiveOES\FHRSpectra.py", line 1, in <module>   File "c:\users\petr\envs\py1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "massiveOES\spectrum.py", line 3, in <module>   File "c:\users\petr\envs\py1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "site-packages\scipy\optimize\__init__.py", line 241, in <module>   File "c:\users\petr\envs\py1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "site-packages\scipy\optimize\_minimize.py", line 28, in <module>   File "c:\users\petr\envs\py1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "site-packages\scipy\optimize\_trustregion_krylov.py", line 2, in <module>   File "c:\users\petr\envs\py1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)   File "site-packages\scipy\optimize\_trlib\__init__.py", line 1, in <module> File "c:\users\petr\envs\py1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
    module = loader.load_module(fullname)   File "messagestream.pxd", line 5, in init scipy.optimize._trlib._trlib ModuleNotFoundError: No module named 'scipy._lib.messagestream' [2128] Failed to execute script GUI

我在使用PyInstaller时遇到了相同的问题... https://dev59.com/06bja4cB1Zd3GeqPfmRR - Roko Mijic
1个回答

18

好的,以下内容对我解决了即时问题:编辑 pyinstaller 的 .spec 文件并添加以下带有 Scipy 的隐藏导入:

OK, 以下对我立刻解决了问题: 编辑 pyinstaller 的 .spec 文件,并增加以下的隐藏 import 带有 Scipy:

 hiddenimports=['scipy._lib.messagestream']

查看我的问题以获取更多信息。


谢谢你的技巧。我在2017年5月没有遇到这个问题。这是新版本中的一个错误吗? - Stéphane
下一个版本中看起来已经解决了?讨论在这里:https://github.com/pyinstaller/pyinstaller/issues/2987 - flutefreak7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接