使用PyInstaller或cx_Freeze使用Anaconda2生成非常大的文件大小

时间:2017-03-21 03:54:14

标签: python python-2.7 anaconda pyinstaller cx-freeze

似乎PyInstaller和cx_Freeze将包含许多带有Anaconda2环境的软件包。

使用其中任何一个将生成超过 600MB 的文件,这主要是由于一系列包含最终包含Numpy的包含,其中包括其他所有内容。

包含导致600MB +价值套餐的示例:

import sys
from sys import argv
from os import path
from Tkinter import *
import tkFileDialog
from PyQt4 import QtCore, QtGui, uic, QtOpenGL
from moviepy.editor import *

这看起来并不多,但我不能在没有明确排除Numpy的情况下减少文件,但即便如此,它仍然是~140MB并且不会执行。

有没有人有处理这种情况的经验?对于一个小应用程序来说,600MB是过分的。

2 个答案:

答案 0 :(得分:5)

这与Anaconda无关。使用标准Python安装时,您将获得相同的大小。

您的发行量如此之大的原因是您需要提供额外的套餐。 PyQt4是一个非常大的组块。对于所有Qt库和Python绑定,这需要大约250MB的磁盘空间。另外,正如你已经写过numpy需要另外一大块磁盘空间(我的计算机上有250MB)。如果依赖这些软件包,则无法减少所需的磁盘空间。

但是,您可以排除不需要的包。我发现cx_freeze喜欢包含Python环境中安装的软件包,无论您是否在项目中使用它们。因此,我建议创建一个仅包含项目所需软件包的虚拟环境。您也可以从构建中排除tkinter。

答案 1 :(得分:2)

此问题与Anaconda直接相关。

使用Pyinstaller构建一个exe时,它会在Anaconda的软件包链接中混淆并包含大量的东西。

使用带有轮子的非Anaconda python用于非pip包时,此问题已得到解决。