似乎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是过分的。
答案 0 :(得分:5)
这与Anaconda无关。使用标准Python安装时,您将获得相同的大小。
您的发行量如此之大的原因是您需要提供额外的套餐。 PyQt4是一个非常大的组块。对于所有Qt库和Python绑定,这需要大约250MB的磁盘空间。另外,正如你已经写过numpy需要另外一大块磁盘空间(我的计算机上有250MB)。如果依赖这些软件包,则无法减少所需的磁盘空间。
但是,您可以排除不需要的包。我发现cx_freeze喜欢包含Python环境中安装的软件包,无论您是否在项目中使用它们。因此,我建议创建一个仅包含项目所需软件包的虚拟环境。您也可以从构建中排除tkinter。
答案 1 :(得分:2)
此问题与Anaconda直接相关。
使用Pyinstaller构建一个exe时,它会在Anaconda的软件包链接中混淆并包含大量的东西。
使用带有轮子的非Anaconda python用于非pip包时,此问题已得到解决。