使用 PyInstaller 或 cx_Freeze 使用 Anaconda2 生成非常大的文件
Using PyInstaller or cx_Freeze produces very large file size with Anaconda2
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 对于一个小应用来说太多了。
这与Anaconda无关。当您使用标准 Python 安装时,您将获得相同的尺寸。
您的发行版之所以如此之大,是因为您需要提供额外的软件包。一个非常大的块是 PyQt4。对于所有 Qt 库和 Python 绑定,这需要大约 250MB 的磁盘 space。另外,正如您已经写过的那样,numpy 占用了另一大块磁盘 space(在我的计算机上为 250MB)。如果您依赖这些软件包,您将无法减少所需的磁盘空间 space.
但是您可以排除不需要的包。我发现 cx_freeze 喜欢包含安装在 Python 环境中的包,无论您是否在项目中使用它们。所以我建议创建一个虚拟环境,只包含你项目中需要的包。此外,您可能希望从构建中排除 tkinter。
此问题与 Anaconda 直接相关。
使用 Pyinstaller 构建 exe 时,它会混淆 Anaconda 的包链接并包含大量内容。
使用带轮子的非 Anaconda python 非 pip 包时,此问题已解决。
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 对于一个小应用来说太多了。
这与Anaconda无关。当您使用标准 Python 安装时,您将获得相同的尺寸。
您的发行版之所以如此之大,是因为您需要提供额外的软件包。一个非常大的块是 PyQt4。对于所有 Qt 库和 Python 绑定,这需要大约 250MB 的磁盘 space。另外,正如您已经写过的那样,numpy 占用了另一大块磁盘 space(在我的计算机上为 250MB)。如果您依赖这些软件包,您将无法减少所需的磁盘空间 space.
但是您可以排除不需要的包。我发现 cx_freeze 喜欢包含安装在 Python 环境中的包,无论您是否在项目中使用它们。所以我建议创建一个虚拟环境,只包含你项目中需要的包。此外,您可能希望从构建中排除 tkinter。
此问题与 Anaconda 直接相关。
使用 Pyinstaller 构建 exe 时,它会混淆 Anaconda 的包链接并包含大量内容。
使用带轮子的非 Anaconda python 非 pip 包时,此问题已解决。