如何在 cmd 窗口中查看 Python 可执行文件输出?

uma*_*utt 4 python command-line cmd exe

我用python 3.5编写了一个脚本。我已经使用 pyinstaller 制作了一个 .exe 文件。该脚本有一些打印语句,它们在执行期间显示在控制台中。当我从命令提示符运行我的脚本时,我可以看到我的 cmd 中的所有消息,但是当我从 cmd 运行 .exe 文件时,我在命令提示符中看不到任何消息。有什么方法可以从 .exe 文件中查看命令提示符中的消息。

例如,假设下面是我的名为 abc.py 的脚本:

def sum():
   first = 5
   print('First number is {}'.format(first))
   second = 10
   result = first + second
   print('second number is {}'.format(second))
   print('Sum is = {}'.format(result))
 sum()
Run Code Online (Sandbox Code Playgroud)

现在,当我从 cmd 运行此文件时,例如:python \pathto\abc.py,我可以看到 cmd 中的所有消息。现在,当我制作 .exe 并从 cmd 执行类似 \pathto\abc.exe 的操作时,我什么也看不到。有没有办法在 .exe 文件的 cmd 中看到 ,msgs ?

uma*_*utt 7

首先感谢您的支持。我找到了解决方案。我正在使用: pyinstaller.exe --onefile --windowed myapp.py 生成我的 .exe 文件。从文档中我发现 --windowed 阻止在应用程序运行时显示控制台窗口。如果您要发布非图形应用程序(即控制台应用程序),则不需要使用此选项。因此,如果您使用以下命令生成 exe:

  pyinstaller.exe --onefile myapp.py 
Run Code Online (Sandbox Code Playgroud)

然后通过 cmd 运行它,所有的消息都会显示在你的 cmd 中。注意:通过这种方式,您也可以使用命令行参数从 cmd 运行您的 exe。例如假设如果在上面的代码变量中:

first = sys.argv[1]
Run Code Online (Sandbox Code Playgroud)

然后从cmd运行exe文件,如:

/exe/路径 20

也会起作用。请记住, sys.argv 会生成一个字符串,因此在这种情况下,您需要将 20 转换为整数。


Qwe*_*rty 5

你的问题是你正在使用--windowed。使用 --console 代替,它应该像正常一样打印!