我有一个python脚本,它通常是从windows powershell调用的,带有一些命令行参数。我想以.exe格式分发这个脚本,我想保持基于控制台的相同“用户界面”以供使用。
用户打开windows powershell。
用户从shell调用myscript.exe程序:
myscript.exe argument1 argument2 argument3
程序在同一控制台中执行,并在同一控制台中写入其输出。
实际上,我有一个myscript.exe程序,它当然从powershell获取参数,但不幸的是,它在调用时生成的另一个控制台中执行该程序。
我如何才能避免这种行为,并保持一切在同一个控制台?
编辑:
我已经学习了http://www.py2exe.org/index.cgi/Tutorial的教程。
对于我使用的setup.py生成文件:
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中
EdTe3:
这是在Windows 8.1上完成的,使用:
Python 3.4.2
PY2EXE 0.9.2.2版
powershell 4.0版
最后的可执行文件也在没有任何python安装的windows 10系统上进行了测试;它工作了,但显示了相同的控制台生成行为。
最佳答案
似乎我已经在this answer的帮助下找到了答案,由this answer链接。这个问题也与这个other问题有关。一个共同的原因产生了两个不同但相关的问题。
它是由.exe文件名引起的。切换到不同的文件名,停止uac请求管理员权限,并在同一个shell中执行软件。
名字是:
<project_name_under_NDA>_update.exe
但是切换到
try.exe
它奏效了。