2016-07-15 85 views
0

我有一個應用程序在運行時向控制檯輸出一些內容。但作爲一個獨立的可執行文件不打印任何東西到控制檯?cx_Freeze無法打印到控制檯

的setup.py腳本是這樣的:

import sys 
from cx_Freeze import setup, Executable 

setup(
    name = "My App", 
    version = "1.0", 
    options = { 
     "build_exe" : { 
      "include_files": ['MyImgs'] 
     }, 
    }, 
    executables = [Executable("Main.py", base = "Win32GUI")] 
) 

在命令行我運行以下命令:py setup.py build

然後我找到可執行文件並運行:Main.exe

我由於某種原因缺少的是print()聲明。有什麼我需要包括在安裝腳本中發生這種情況?

回答

2

如果您使用「Win32GUI」基礎,則Windows不會提供stdout和stderr。您需要將這些自己重定向到其他位置(如文件)。如果使用「控制檯」基礎,則stdout和stderr可用,並且print()將按預期工作 - 但如果您尚未從控制檯首先運行控制檯,則會看到爲您創建的控制檯!

+0

'base'究竟做了什麼?並設置'base =「Console」'允許我在Windows和Mac上運行這個可執行文件 – Max

+1

設置「base」定義了運行Python代碼的基本代碼(參見源代碼的源代碼部分)。控制檯在所有平臺上都是標準的只有Windows區分「控制檯」和「GUI」。所以是的,使用「控制檯」可以讓你在Windows和Mac上運行。 –