【问题标题】:Using PyInstaller or cx_Freeze produces very large file size with Anaconda2使用 PyInstaller 或 cx_Freeze 会在 Anaconda2 中产生非常大的文件大小
【发布时间】:2017-08-12 14:09:18
【问题描述】:

似乎 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 对于小型应用程序来说已经过大了。

【问题讨论】:

  • 当你不排除任何东西时,可执行文件是否有效?
  • 是的,exe工作正常,但我需要分发exe,所以600MB太大了:(

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    此问题与 Anaconda 直接相关。

    在使用 Pyinstaller 构建 exe 时,它​​会在 Anaconda 的包链接中感到困惑,并包含大量淫秽内容。

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

    【讨论】:

    • 我自己的经验也表明了这一点。我曾经在windows上的anaconda中使用pyinstaller将一个小软件打包成.exe,它会创建一个~40M的文件夹。没有在python中引入任何新模块,现在它给了我一个可笑的~499M!在 anaconda 之外做同样的事情,它再次下降到 40M。
    • Miniconda 可能不会有这个问题,因为链接很少。
    • Anaconda 绝对是问题所在。在安装了 Anaconda 的机器上,生成的文件夹超过 600 MB。在安装了准系统 Python + Pandas/Numpy 的机器上,它只有 100MB。
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 2020-05-21
    • 2017-11-18
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多