【问题标题】:Create windowed exe using py2exe that accepts program arguments使用接受程序参数的 py2exe 创建窗口 exe
【发布时间】:2015-11-20 01:26:37
【问题描述】:

py2exe 提供了一个list of options,可用于自定义生成的 exe 的设置方式。特别是,它提供了windowsconsole 选项,用于指定exe 应该使用控制台还是图形界面。

我希望我的程序在执行时隐藏控制台,但也接受程序参数。

当我使用 windows 选项创建 exe 并使用有效参数运行程序时,程序似乎没有执行。

这是一个例子。假设我的python文件是HelloWorld.py:

import sys
import getopt

if __name__ == '__main__':
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'h', ['hello'])
    except getopt.GetoptError:
        sys.exit(2)

    for opt, arg in opts:
        if opt in ('-h', '--hello'):
            print 'Hello world!'

使用设置 setup(console=['HelloWorld.py']) 并运行生成的 exe,HelloWorld.exe -h 输出 Hello world!

使用设置 setup(windows=['HelloWorld.py']) 并使用 HelloWorld.exe -h 运行生成的 exe 不会输出任何结果。

【问题讨论】:

  • windows 只是阻止控制台出现;无论哪种方式,您都可以拥有 GUI。你想用这个组合的 exe 做什么?
  • 我解释得很糟糕。当我尝试将程序参数发送到“windows”exe 时,程序不会执行。所以,我不希望 cmd 在按下 exe 时打开,但我也希望能够使用程序 args。
  • 我不明白为什么会这样;你能举一些你正在尝试的例子来解释到底发生了什么吗?
  • 你能提供一个最小的完整例子吗?尝试编写一个简单地检查命令行参数的玩具应用程序,并准确显示您是如何构建exes 的,以便我们可以测试您看到的行为。

标签: python exe py2exe


【解决方案1】:

你可以找到关于py2exe如何管理stdout和sterr的解释 当它将应用程序打包为控制台应用程序或 Windows 应用程序时,请点击以下链接:

http://www.py2exe.org/index.cgi/StderrLog

【讨论】:

    【解决方案2】:

    windows 选项适用于 GUI 应用程序(wxpython 等),它可以捕获标准输出并将其显示在 GUI 中,但如果不执行此类操作,您将需要 cmd 窗口通过“打印”语句打印标准输出。例如,在 wxpython 中,您可以使用 redirect=True 选项启动应用程序以捕获标准输出。

    http://www.wxpython.org/docs/api/wx.App-class.html

    import wx
    
    if __name__ == '__main__':
        app = wx.App(True)
    

    redirect - 是否应该重定向 sys.stdout 和 sys.stderr?默认为 在 Windows 和 Mac 上为 True,否则为 False。如果文件名是 None 然后 输出将被重定向到根据需要弹出的窗口。

    【讨论】:

    • 我使用的是 Tkinter,而不是 wxpython。我正在使用 cmd,但在将 windows 选项与 py2exe 一起使用时没有看到打印语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多