我有一个Python脚本,通常使用一些命令行参数从Windows PowerShell中调用。我想以.exe格式分发这个脚本,并且我想保留基于控制台的相同“用户界面”的用法。如何在不产生新控制台窗口的情况下执行控制台EXE?
- 用户打开Windows Powershell。
用户从外壳调用myscript.exe程序:
myscript.exe argument1 argument2 argument3
该程序在同一控制台执行并在同一控制台将其输出。
其实我有一个myscript.exe程序,这当然从PowerShell中获取的参数,但不幸的是,其中在呼叫催生了另一个控制台执行程序。
我该如何避免这种行为并将所有内容保存在同一个控制台中?
编辑: 我已按照教程http://www.py2exe.org/index.cgi/Tutorial。
对于我的setup.py build文件我用:
- 的
console
关键字(提供myscript.py在列表中唯一的元素) - 的
zipfile
关键字(设置为true) options
关键字optimize: 2
,bundle_files: 1
和compressed: True
。
编译工作正常,程序做它应该做的事情。唯一不受欢迎的是打开专用控制台,而不是在同一个控制台中执行。
EDIT2:这正是我的setup.py代码。
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'bundle_files': 1, 'compressed': True, 'optimize': 2}},
console = [{'script': "myscript.py"}],
zipfile = None,
)
我只需调用脚本类型:
python setup.py
在Windows PowerShell
EDIT3: 这已经在Windows 8.1中进行搭配:
- 的Python 3.4 .2
- py2exe 0.9.2.2
- PowerShell的4.0
最终的可执行文件也已经没有任何Python安装在Windows 10系统上进行测试;它的工作,但显示相同的控制台产卵行为。
hm,通常,python只是打印到'stdout',这意味着不应打开第二个控制台窗口。然后再次,我不是一个真正的Windows用户... –
@MarcusMüller我刚刚说同样的事情。可能是因为'py2exe'以某种方式编译可执行文件,以至于它总是会产生一个新的控制台主机 –
是的,我想这是一个py2exe功能。但我想知道如何避免它。 – auserdude