我有一個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