[英]How to get rid of broken Python Environments in Visual Studio 2017?
[英]Why is Python broken in Visual Studio 2017?
在安裝 Visual Studio 2017 之前,我的所有 python 文件都在 PowerShell、Git Bash 和 Cygwin Terminal 中使用 py(或 py3)成功運行,但不是 CMD.exe 或 MSYS:
py myscript.py
這個可執行文件是由 Python 3.7 安裝程序直接安裝的,我為它配置了路徑變量。
安裝 VS 2017 后,Microsoft 將其 py.exe 的 VS 特定副本的路徑C:\\Windows\\py.exe
插入到系統PATH
變量中。 這個python副本直接運行時什么都不做,也不會響應exit()
命令來終止它的線程,腳本傳入它時什么也不做。 從字面上看沒有任何效果,甚至沒有print()
語句。
在 Visual Studio 中,打開“解決方案資源管理器”窗口並右鍵單擊 script.py 並單擊Start without Debugging
,沒有任何反應。
如果我單擊Start with Debugging
,則它將視圖更改為調試模式,並“運行”程序(顯示暫停和停止按鈕),但沒有顯示執行窗口。 “輸出”面板會自動選擇“調試”,在那里看不到任何輸出。 “autos”和“locals”面板沒有填充,表明實際上沒有任何東西在運行。
我不想要變通辦法。 我知道我可以從 PATH 中刪除此條目,但官方 Python 安裝可能與 VS 2017 不兼容或可能缺少集成。 我想知道為什么微軟的py.exe
副本在所有方面都失敗了,以及他們針對這個問題的官方修復是什么。
這不是一個真正的正確答案,因為我不確定它與您在 Visual Studio 2017 和 PowerShell 方面遇到的問題有什么關系——但是既然您讓我把它當作一個來發布,我正在這樣做。
微軟沒有安裝C:\\Windows\\py.exe
可執行文件,Python 安裝程序安裝了。
另請注意,它不是 Python 解釋器,而是一個命令行“啟動器”實用程序,用於在腳本文件的開頭查找特殊的 shebang( #!
前綴)注釋。 它使在 Windows 上運行 Python 腳本的工作方式與在 Linux 上運行的方式有些類似——並且當您的系統上安裝了多個 Python 版本(例如 2.x 和 3.x)時會有所幫助。
請參閱Python 文檔中有關在 Windows 上使用 Python 的以下內容。 另請參閱 Vinay Sajip(作者)的pylauncher 項目的版本控制存儲庫,該項目是它起源的地方。
正如我在前言中所說,我不確定所有這些與您的問題有何關系,但我認為了解事情通常如何運作可能會幫助您解決問題。
希望你覺得它很有見地......
Visual Studio 2017 使用 PowerShell 作為其外殼/執行環境。
問題是由於 PowerShell 采用了 Cygwin 執行環境的屬性(包括虛擬路徑)中的一些問題。
問題隨機消失了。 一秒鍾,PowerShell 將其工作目錄報告為/cygdrive/c/folder/to/working/directory
,其行為與 Cygwin Terminal 完全一樣。 下次我運行 PowerShell 時,它運行正常,將這種輸出返回給pwd
:
PS C:\WINDOWS\system32> pwd
Path
----
C:\WINDOWS\system32
這個問題是兩個問題的組合。 第一個與 py.exe 沒有將 Cygwin 識別為交互式外殼有關,如本答案中所述。
第二個與 PowerShell 采用 Cygwin 的執行環境有關。 不知道這是怎么發生的,或者為什么突然停止發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.