【发布时间】:2016-08-09 07:13:33
【问题描述】:
我正在尝试从我编写的一个非常简单的脚本创建一个 .exe。该脚本仅包括 glob 和 pandas。但是 pyinstaller 包括 matplotlib、numpy、scipy、qt4、ipython 和一堆其他东西。 .exe 不会运行,因为 matplotlib 存在错误,但我什至不需要 matplotlib。我做错了什么让 pyinstaller 无法识别只需要 glob 和 pandas?
我已经手动排除了 scipy、matplotlib、PyQt4 和 iPython 并且 .exe 仍然是 160mb!
附:我正在使用 python 3.4 在 winpython 中执行此操作。
编辑: 通过进一步的测试,我将其范围缩小到 Pandas。即使是只包含以下内容的脚本:
import pandas
将创建一个 460MB 的 dist 文件夹或一个 182MB 的 .exe 文件。我可以找出正在导入哪些模块以便正确排除所有模块的最简单方法是什么?
编辑2: 我尝试制作一个 hook-pandas.py 文件,其中包含:
excludedhooks=['scipy','matplotlib','PIL','cython','PyQt4','zmq']
控制台输出表明,由于挂钩文件,导入正在被删除,但来自这些模块的大量文件仍最终位于 dist 文件夹中。
我也尝试在 .spec 文件以及控制台中使用 --exclude-module 排除这些模块,但这些模块中的文件仍然显示。
【问题讨论】:
-
所以我需要手动排除所有我不需要的东西?为什么它会假设我包含了所有这些模块?
-
好吧我不知道,但我猜答案写在 PyInstaller 的官方手册中。
-
其中一些东西绝对是必要的。 Pandas 是基于 NumPy 构建的,因此您肯定需要 NumPy。
-
猜想,但您的应用文件夹中没有一些不必要的大文件(例如二进制文件)吗? PyInstaller 也可以将它们放入包中。包含在控制台输出 afaik 中。
标签: python python-3.x pyinstaller