Pyinstaller自动包含不需要的模块

nic*_*sts 7 python pyinstaller python-3.x

我试图从我编写的非常简单的脚本中创建一个.exe。该脚本仅包含glob和pandas。但是pyinstaller包括matplotlib,numpy,scipy,qt4,ipython和其他一堆东西。.exe将不会运行,因为matplotlib出现错误,但我什至不需要matplotlib。我要怎么做才能使pyinstaller无法识别仅需要glob和pandas?

我已经手动排除了scipy,matplotlib,PyQt4和iPython,而.exe仍然是160mb!

PS我正在用python 3.4在winpython中这样做。

编辑:经过一些进一步的测试,我将范围缩小到了熊猫。即使是仅包含以下内容的脚本:

import pandas
Run Code Online (Sandbox Code Playgroud)

将创建一个460MB的dist文件夹或一个182MB的单个文件.exe。找出要导入哪些模块以便正确排除所有模块的最简单方法是什么?

Edit2:我尝试制作一个包含以下内容的hook-pandas.py文件:

excludedhooks=['scipy','matplotlib','PIL','cython','PyQt4','zmq']
Run Code Online (Sandbox Code Playgroud)

控制台输出指示由于挂钩文件而删除了导入,但是来自这些模块的大量文件仍最终位于dist文件夹中。

我也尝试过使用--exclude-module将这些模块排除在.spec文件以及控制台中,但这些模块中的文件仍然显示出来。

nic*_*sts 2

不确定这是否真的算作解决方案。但是,通过忽略 winpython 并使用仅添加了 pyinstaller 和 pandas 的 pip 安装的 python 标准安装,我可以轻松生成一个 18MB 的功能性 .exe。我猜这与winpython有关。