2013-05-27 22 views
1

cx_freeze包含安裝在我的機器上的所有模塊,因此凍結構建變得非常龐大。如何禁用自動檢測功能?我只是想建立小PyQt的應用程序:如何禁用cx_freeze自動檢測所有模塊

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

包括它不應該包含哪些模塊?你可以將日誌發佈到pastebin嗎?不要忘記,你需要PyQt和Python本身的幾個庫。 –

+0

它包括我已在我的電腦上安裝的所有模塊,例如matplotlib,PIL,Tkinter。我家裏有一臺帶有windows的虛擬機,只安裝了最低要求(python和PyQt),而且應用程序的構建正常。但在工作中,我有很多包+自定義包,所以應用程序在構建後失敗。這裏是日誌。 http://pastebin.com/G5tp3QkH。我只想設置所需的最小模塊,而不是更多=) –

+0

如果代碼中加載了matplotlib,那可能會引入PIL,numpy和tkinter。嘗試添加matplotlib'排除'。 –

回答

1

這很簡單。 此應用程序使用一個自定義模塊,所以我已經添加應用程序文件夾的路徑:

path = sys.path + ["app"] 

訣竅是,應用程序使用模塊「utils的」我有我的OS路徑等「utils的」模塊。其他「utils的」模塊導入了很多東西像matplotlib,PIL等 所以我已經解決的問題,通過改變路徑的環境是這樣的:

path = ["app"] + sys.path 

所以,cx_freeze得到正確的模塊時,凍結的可執行文件。