Pyinstaller自动包含不需要的模块

2024-05-20 16:05:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从我编写的一个非常简单的脚本创建一个.exe。剧本只包括环球和熊猫。但是pyinstaller包括matplotlib、numpy、scipy、qt4、ipython和其他一些东西。因为matplotlib有错误,.exe不会运行,但我甚至不需要matplotlib。我做错了什么让pyinstaller不认识到只需要glob和pandas?

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

另外,我在winpython中用python 3.4做这个。

编辑: 经过进一步的测试,我把范围缩小到熊猫身上。即使脚本只包含:

import pandas

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

编辑2: 我试着制作一个hook-pandas.py文件,其中包含:

excludedhooks=['scipy','matplotlib','PIL','cython','PyQt4','zmq']

控制台输出表明,由于hook文件的原因,导入被删除,但是这些模块中的大量文件最终仍会出现在dist文件夹中。

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


Tags: 模块文件脚本文件夹编辑pandasmatplotlibdist
1条回答
网友
1楼 · 发布于 2024-05-20 16:05:58

不确定这是否真的算作解决方案。但是,通过将winpython全部忽略在一起,并使用python的标准安装(仅添加了pip安装程序和pandas),我很容易生成一个18MB的functional.exe。我想这和winpython有关。

网友
2楼 · 发布于 2024-05-20 16:05:58

Pyinstaller可能已经从当前的依赖项中找到了这些依赖项。如果确定,请使用--exclude-module标志列出要排除的所有模块。

http://pythonhosted.org/PyInstaller/#general-options

相关问题 更多 >