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放错了模块。
如何设置我需要的严格模块列表?
答案 0 :(得分:1)
这很简单。 此应用程序使用自定义模块,因此我在路径中添加了应用程序文件夹:
path = sys.path + ["app"]
诀窍是app使用模块“utils”,我的OS路径中有其他“utils”模块。其他“utils”模块导入很多东西,如matplotlib,PIL等。 所以我通过改变这样的路径环境来解决问题:
path = ["app"] + sys.path
因此,当冻结可执行文件时,cx_freeze会获得正确的模块。