【发布时间】:2018-09-08 15:07:15
【问题描述】:
我正在使用 pyinstaller 为使用 pandas 和 sklearn 的 python 程序创建一个 .exe。 pyinstaller 进程完成并按预期生成带有可执行文件的 dist 文件夹。但是,当我运行 .exe 时,出现与 sklearn 和 scipy 相关的模块导入错误。
我创建了一个测试脚本 (test.py) 来测试导入,它只导入 pandas 和 sklearn,然后打印成功消息:
import time
import pandas as pd
import sklearn
def main():
print('hello world!')
time.sleep(5)
if __name__ == '__main__':
main()
我知道 pyinstaller hooks 并且我能够通过在 pyinstaller hooks 目录中添加一个 hooks 来解决 pandas 错误。我为 sklearn 和 scipy 添加了类似的钩子,看起来它们正在运行,但在 pyinstaller 输出中我收到警告说“找不到隐藏导入“sklearn.utils.sparsetools._graph_validation”!和'._graph_tools'类似的一个。
这是 scipy (hook-scipy.py) 的钩子:
print('loading custome hook for scipy')
from PyInstaller.utils.hooks import collect_submodules
hiddenimports = collect_submodules('scipy')
这是运行 pyinstaller 生成的警告的快照
这是运行 test.exe 时的错误快照
我在一个安装了 pyinstaller、pandas、sklearn、scipy 和所有依赖项的虚拟环境中工作(至少我可以在这个 venv 中运行常规的 test.py 脚本)。在 Windows 10.10.0 上使用 PyInstaller 3.3.1、Python 3.6.4。
感谢任何帮助!
【问题讨论】:
标签: python pandas scipy scikit-learn pyinstaller