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

6
我已经使用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()

现在当我在cmd中运行这个文件,例如:python \pathto\abc.py,我可以在cmd中看到所有的消息。现在当我制作这个文件的.exe版本并从cmd中执行\pathto\abc.exe时,我什么都看不到。有没有办法从.exe文件中在cmd中查看消息?

1
基本上,我在CMD中看不到任何消息。我也设计了一个GUI,所以我可以看到GUI窗口,但是在CMD中没有消息。 - umair butt
2
展示你用来生成可执行文件的命令。 - Qwerty
1
@simon 是的,它运行良好。没有错误。 - umair butt
1
@qwerty 这是我的命令: pyinstaller.exe --onefile --windowed abc.py我从这里阅读了pzinstaller的文档: https://mborgerson.com/creating-an-executable-from-a-python-script/然后,我尝试通过删除--windowed属性来创建exe文件,但对我来说没有起作用。 - umair butt
2
@umair butt 在哪个操作系统上?你尝试过使用 --console 而不是 --windowed 吗? - Darkonaut
显示剩余3条评论
2个回答

9

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

  pyinstaller.exe --onefile myapp.py 

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

first = sys.argv[1]

然后在命令提示符中运行exe文件,例如:

/exe/path 20

也能够工作。请注意,sys.argv生成一个字符串,所以在这种情况下,您需要将20转换为整数。


5
您的问题在于您正在使用 --windowed 参数。 请改用 --console 参数,它应该会正常打印!

是的,这也可以工作。如果我不使用--console或--windowed,那么它也能正常工作。 - umair butt
1
@umairbutt 如果这是正确的答案,它应该被接受。 - Qwerty
我已经接受了,但因为我的声誉问题,它在这里没有显示。抱歉。 - umair butt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接