簡體   English   中英

為什么 Python 在 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.

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