簡體   English   中英

如何在不顯示命令提示符的情況下運行 powershell 中的 python 代碼?

[英]How to run python code from powershell with no command prompt showing?

我希望能夠從 .ps1 文件運行 python 腳本,而無需顯示終端 window 來運行腳本。 我認為我可以在最后添加一些額外的命令以使其無窗口運行,但我不確定它是什么。

我在 ps1 文件中的唯一代碼是通過鏈接路徑執行 python 腳本。

我不想以其他方式運行代碼,它必須來自 ps1 腳本,因為我最終會添加到它以獲得更多功能。 如果可能的話,我也寧願不必將文件更改為 a.pyw。

E:/script.py

*注意 - 這次我從不同的驅動器運行文件,但我希望它來自 E:/,就像我在代碼中一樣。

我不想顯示的內容:我不想展示的東西

在評論中你 state:

我正在使用運行 (WIN + R) 和此命令: powershell -wh iex (E:\a.ps1)

  • -wh-WindowStyle Hidden的縮寫

  • iexInvoke-Expression的縮寫,此處不需要- 通常應避免使用:請參閱此答案

注意:雖然這確實使控制台 window PowerShell session本身以不可見的方式運行,但 window 只有在短暫顯示 first 后才會變得不可見。

  • 為避免控制台 window 的這種短暫閃爍,必須間接啟動powershell.exe ,即通過一個 GUI 子系統應用程序,該應用程序使用隱藏的 window 啟動它; 該答案的底部討論了選項。

  • 另請注意,計划在未來直接支持此功能,但可能只會針對PowerShell (Core) 7+的 CLI、 pwsh.exe - 請參閱GitHub 問題 #3028


有了這個:

  • 直接從隱藏的 PowerShell session 調用的控制台應用程序(包括.ps1腳本)也隱藏運行,因為它們直接在隱藏的控制台 window 中運行。

  • 相比之下,任何GUI應用程序或通過Start-Process調用的任一類型的應用程序都以可見方式運行。

    • 雖然您通常也可以使用Start-Process -WindowStyle Hidden來不可見地運行 GUI 應用程序,但不幸的是,這似乎不適用於.pyw文件,即pythonw.exe -launched 腳本,它們仍然以可見方式運行。 [1]

默認情況下,直接調用的.py文件通過py.exe執行,這一個控制台應用程序。

奇怪的是,您的屏幕截圖表明它不是您的情況。

py.exe通常只是真正控制台 Python 可執行文件的啟動器(允許您使用py -2...py -3...在 Python 的 v2 和 v3 版本之間切換), python.exe ,作為解決方法您可以嘗試以下操作(如果需要,請使用python.exe完整路徑):

  • 修改您的E:\a.ps1腳本以使用python.exe顯式調用您的.py腳本:
python.exe E:\script.py
  • 然后像以前一樣啟動你的隱形 PowerShell session,除了改進語法:
# Short for:
#   powershell.exe -WindowStyle Hidden -File E:\a.ps1
powershell -w h -f E:\a.ps1

如果這沒有幫助,請考慮重新安裝 Python。


[1] 我這是因為.pyw腳本本身可能創建的 windows 與pythonw.exe GUI 子系統可執行文件的(不可見的)主要 window 無關。

Start-Process python -ArgumentList "python-script-file-path" -NoNewWindow

這里有很多很棒的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM