2

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 放错了模块。

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

4

1 回答 1

1

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

path = sys.path + ["app"]

诀窍是应用程序使用模块“utils”,而我的操作系统路径中有其他“utils”模块。其他“utils”模块导入了很多东西,比如matplotlib、PIL等。所以我通过改变路径环境解决了这个问题:

path = ["app"] + sys.path

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

于 2013-06-02T12:05:52.100 回答