【问题标题】:cx_Freeze doesn't print to consolecx_Freeze 不打印到控制台
【发布时间】:2016-11-19 04:14:48
【问题描述】:

我有一个应用程序在运行时会向控制台打印一些内容。但是作为一个独立的可执行文件不会向控制台打印任何内容?

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() 语句。我需要在设置脚本中包含什么内容才能发生这种情况吗?

【问题讨论】:

    标签: python python-3.x cx-freeze


    【解决方案1】:

    如果您使用“Win32GUI”基础,则 Windows 不会提供可用的标准输出和标准错误。您需要自己将它们重定向到其他位置(例如文件)。如果您使用“控制台”基础,则 stdout 和 stderr 可用并且 print() 将按预期工作 - 但如果您首先没有从控制台运行它,您将看到为您创建的控制台!

    【讨论】:

    • base 到底是做什么的?并且设置 base="Console" 是否允许我在 Windows 和 Mac 上运行这个可执行文件
    • 设置“base”定义了运行 Python 代码的基本代码(参见源代码的 source/bases 部分)。控制台是所有平台的标准配置。只有 Windows 区分“控制台”和“GUI”。所以是的,使用“控制台”可以让您在 Windows 和 Mac 上运行。
    猜你喜欢
    • 2012-02-07
    • 2015-05-04
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多