如何禁用cx_freeze自动检测所有模块

时间:2013-05-27 08:48:45

标签: python cx-freeze

cx_freeze build包含我机器上安装的所有模块,因此冻结构建变得非常庞大。如何禁用自动检测功能?我只想构建小型PyQt应用程序:

import sys
from cx_Freeze import setup, Executable

path = sys.path + ["app"]
includes = ["app.core", "app.utils"]
excludes = ["tcl"]
build_exe_options = {
"path": path,
"icon": "resources\icons\clock.ico"}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "app",
        version = "1.1",
        description = "My Application",
        options = {"build_exe": build_exe_options},
        executables = [Executable("app.py", base=base,
            targetName="app.exe",
            shortcutName="Application",
            shortcutDir="DesktopFolder")])

另外我有我的自定义模块,每个都有一个utils子模块,所以cx_freeze放错了模块。

如何设置我需要的严格模块列表?

1 个答案:

答案 0 :(得分:1)

这很简单。 此应用程序使用自定义模块,因此我在路径中添加了应用程序文件夹:

path = sys.path + ["app"]

诀窍是app使用模块“utils”,我的OS路径中有其他“utils”模块。其他“utils”模块导入很多东西,如matplotlib,PIL等。 所以我通过改变这样的路径环境来解决问题:

path = ["app"] + sys.path

因此,当冻结可执行文件时,cx_freeze会获得正确的模块。