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

Python 使用PyInstaller或cx_Freeze会使用Anaconda2生成非常大的文件大小,python,python-2.7,anaconda,pyinstaller,cx-freeze,Python,Python 2.7,Anaconda,Pyinstaller,Cx Freeze,PyInstaller和cx_Freeze似乎将包括许多具有Anaconda2环境的软件包 使用其中一个将生成一个超过600MB的文件,这主要是由于一系列包含,最终包括Numpy,而Numpy则包含几乎所有其他内容 导致600MB以上软件包的Include示例: import sys from sys import argv from os import path from Tkinter import * import tkFileDialog from PyQt4 import QtCore

PyInstaller和cx_Freeze似乎将包括许多具有Anaconda2环境的软件包

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

导致600MB以上软件包的Include示例:

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对于一个小应用来说是太多了。

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

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


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

此问题与Anaconda直接相关

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


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

在不排除任何内容的情况下,可执行文件是否工作?是的,exe工作正常,但我需要分发exe,因此600MB太大:(我自己的经验也表明了这一点。我以前在windows上的anaconda中使用pyinstaller将一个小软件打包到.exe,它创建了一个约40M的文件夹。在python中没有引入任何新模块的情况下,现在它给了我一个可笑的约499M的文件夹。在anaconda之外做同样的事情,它又降到了40M。Miniconda可能不会有新的文件夹。)是问题,因为链接是最小的。Anaconda肯定是问题所在。在安装了Anaconda的计算机上,生成的文件夹超过600 MB。在安装了barebones Python+Pandas/Numpy的计算机上,只有100 MB。