【发布时间】:2021-09-13 08:45:29
【问题描述】:
我已将 Python 文件转换为可执行文件,我想运行可执行文件,但它显示错误。 python 文件运行良好,没有任何错误。
EXE 文件错误:
Traceback (most recent call last):
File "VeerP.py", line 101, in <module>
File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
File "sklearn\ensemble\__init__.py", line 8, in <module>
File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
File "sklearn\ensemble\_forest.py", line 56, in <module>
File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
File "sklearn\tree\__init__.py", line 6, in <module>
File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
File "sklearn\tree\_classes.py", line 41, in <module>
File "sklearn\tree\_criterion.pyx", line 1, in init sklearn.tree._criterion
ModuleNotFoundError: No module named 'scipy.special.cython_special'
[19216] Failed to execute script VeerP
【问题讨论】:
-
您使用什么将 Python 程序包装在可执行文件中?这并不明显,但确实很重要。
-
我正在使用 PyInstaller 将 Python 程序打包成可执行文件
-
将 Python 程序包装在可执行文件中比您想象的要复杂得多,尤其是在它具有广泛依赖关系的情况下。这可能是
pyinstaller所说的“隐藏导入”。pyinstaller文档有一个非常有用的部分,称为When things go wrong。我建议你完成它。 -
@BoarGules 你能否详细说明,如何用一些代码调用“隐藏导入”?
-
您需要执行此操作的代码称为
.spec文件,正如文档所解释的那样。请阅读它们。如何处理隐藏导入太长太复杂,我在这里总结一下。
标签: python scikit-learn scipy executable