Pyinstaller生成大量文件夹

时间:2018-03-11 12:58:40

标签: python splash-screen pyinstaller

我正在使用pyinstaller打包启动画面,这些是python脚本的导入:

import subprocess
import time
import sys
import os
import signal
from multiprocessing import Process, Queue
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk, Pango

我使用以下命令创建dist文件夹:

pyinstaller splash_gui.py 

问题是生成的文件夹是630Mb,这对于一个启动画面程序来说太过分了,所以我进一步调查了一下,我发现我可以删除很多文件(最重的是共享文件夹中的文件)包含我的主题,所有这些主题)但更重要的是我发现绝大多数动态库都没用。

通过反复试验,我设法删除了所有不必要的东西(通常会生成一个我不关心的警告,因为它只是一个闪屏)。有没有直接的方法来避免这种混乱?简单地说,我想保留包含实际被调用函数的文件。

这是干净前后的情况:

630Mb                               8Mb
.                                   .
└── splash_gui                      └── splash_gui
    ├── array.so                        ├── binascii.so
    ...                                 ├── _collections.so
    ├── share                           ├── cPickle.so
    │   ├── fontconfig                  ├── cStringIO.so
    │   ├── glib-2.0                    ├── fcntl.so
    │   ├── icons                       ├── _functools.so
    │   ├── locale                      ├── gi._gi.so
    │   ├── mime                        ├── _io.so
    │   └── themes                      ├── itertools.so
    ...                                 ├── libpython2.7.so.1.0
    ├── _sha.so                         ├── math.so
    ├── _socket.so                      ├── _multiprocessing.so
    ├── splash_gui                      ├── operator.so
    ├── _ssl.so                         ├── _random.so
    ├── strop.so                        ├── select.so
    ├── _struct.so                      ├── _socket.so
    ├── termios.so                      ├── splash_gui
    ├── time.so                         ├── _struct.so
    ├── unicodedata.so                  ├── time.so
    └── zlib.so                         └── zlib.so

除了警告,启动画面正常工作

1 个答案:

答案 0 :(得分:0)

如果一个.exe文件(没有其他文件夹/文件)是可以接受的(如果你需要查询文件大小,真的只是尝试一下),这是我的解决方案,运行命令:

pyinstaller --onefile "directory\script_name.py"

在当前目录中,将创建一堆新文件夹。以下是对它们的处理方法:

  1. 您的文件将位于“dist”,并将被称为script_name(当然不包含“.py”
  2. 文件夹“dist”和“build”是不必要的,以及__pycache__如果出现
  3. 此外,还将创建文件“script_name”.spec。