【问题标题】:Include only needed parts of Python to final build exe仅将 Python 所需的部分包含到最终构建 exe 中
【发布时间】:2018-07-21 06:11:23
【问题描述】:

我想知道在使用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
)

【问题讨论】:

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


    【解决方案1】:

    在 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 他们。"

    【讨论】:

    • 我确实应用了文档中提到的东西,我想知道是否可以做更多。
    • 您是否尝试在沙盒虚拟环境中使用 cx_freeze?
    • 和 2n 您是否尝试过构建选项 = {"build_exe": "-o=2"} - 优化?
    • 可能会通过优化编译但也有调试信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多