只包含Python所需的部分到最终构建exe

时间:2018-02-10 17:05:55

标签: python python-3.x build cx-freeze

我想知道在使用cx_freeze或其他东西创建Python exe时是否有办法减小文件大小。

之前建议排除不必要的模块,但不是这样,我试图找出是否有可能实际排除Python本身的部分内容。

构建exe时,我发现很多我不需要的东西都包含在构建文件中(几乎所有Lib目录,很多来自site-packages等)。我问我们是否可以排除这些?或者更好,我可以只包括我需要的东西。 (需要先找到我需要的东西)

更进一步,是否可以排除Python本身未使用的内置功能?即使这意味着从源代码重建Python?

感谢您的时间。

编辑:也许他们已被排除在外,我可能误解了这种情况。但我不得不手动排除Tkinter。这使我的问题是如果可以删除更多。

Edit2:以下是脚本文件:

from cx_Freeze import setup, Executable
import os

PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')

base = None

executables = [Executable("serdar.py", base=base)]

includefiles = ['zombie.png', 'human.jpeg']
packages = []
excludes = ["tkinter"]

options = {
    'build_exe': {
        'packages':packages,
        'excludes':excludes,
        'include_files':includefiles,
        "optimize": 2
    },

}

setup(
    name = "serdar",
    options = options,
    version = "0.01",
    description = 'None',
    executables = executables
)

1 个答案:

答案 0 :(得分:0)

在setup.py中,尝试仅包含您想要的包,例如:

import sys
from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}
来自文档的

:“一个常见的问题是cx_Freeze没有自动检测到需要复制文件。检测到代码导入的模块,但如果它们是动态加载的 - 例如通过插件系统 - 你有告诉cx_Freeze他们。“