如何在不生成新控制台窗口的情况下执行控制台EXE?

2024-07-08 08:47:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python脚本,通常是从windowspowershell调用的,带有一些命令行参数。我希望以.exe格式分发此脚本,并且我希望基于控制台保留相同的“用户界面”以供使用。在

  1. 用户打开Windows Powershell。在
  2. 用户调用myscript.exe来自shell的程序:

    myscript.exe argument1 argument2 argument3
    
  3. 程序在同一控制台中执行,并将其输出写入同一控制台。

实际上我有一个myscript.exe程序,它当然从PowerShell获取参数,但是不幸的是,在调用时生成的另一个控制台中执行该程序。在

我怎样才能避免这种行为,并将所有内容都放在同一个控制台中?在

编辑: 我遵循了http://www.py2exe.org/index.cgi/Tutorial的教程。在

为了我的设置.py我使用的生成文件:

  • console关键字(提供myscript.py作为列表中唯一的元素)
  • zipfile关键字(设置为True)
  • 包含optionsoptimize: 2bundle_files: 1和{}的options关键字。在

编译工作正常,程序完成了它应该做的事情。唯一不需要的是打开一个专用控制台,而不是在同一个控制台中执行。在

编辑2:这正是我的设置.py代码。在

^{pr2}$

我只需将脚本称为键入:

python setup.py 

在Windows Powershell中

编辑3: 这在Windows 8.1上已通过以下方式完成:

  • Python 3.4.2
  • py2exe 0.9.2.2版
  • Powershell 4.0版

最终的可执行文件也在没有安装任何Python的windows10系统上进行了测试;它工作正常,但显示了相同的控制台生成行为。在


Tags: 命令行用户py程序脚本编辑参数windows
2条回答

希望下面的内容能有所帮助。无论是在标准Windows Command Prompt,还是在使用Windows PowerShell时,这对我都很好:

测试.py

import sys

print "Arguments passed:"

for arg in sys.argv:
    print '  {}'.format(arg)

设置.py

^{pr2}$

它是使用以下方法创建的:

python setup.py py2exe

下面是一个执行示例:

PS E:\test> .\test.exe hello world
Arguments passed:
  E:\test\test.exe
  hello
  world

如果这仍然生成一个单独的shell,那么PowerShell设置的任何环境变量是否会改变您的结果?在

我已经在Python 2.7.9 |Anaconda 2.2.0 (32-bit)py2exe 0.6.9中测试过这个。在

似乎我自己在this answer的帮助下找到了答案,由this answer链接。这个问题也与这个other问题有关。一个共同的原因产生了两个不同但又相关的问题。在

它是由.exe文件名引起的。切换到不同的文件名,停止UAC请求管理员权限,并在同一shell中执行软件。在

名字是:

<project_name_under_NDA>_update.exe

但换成

^{pr2}$

成功了。在

相关问题 更多 >

    热门问题