为什么Python在Visual Studio 2017中被破坏?

为什么Python在Visual Studio 2017中被破坏?,python,python-3.x,visual-studio,path,visual-studio-2017,Python,Python 3.x,Visual Studio,Path,Visual Studio 2017,在安装Visual Studio 2017之前,我的所有python文件都在PowerShell、Git Bash和Cygwin终端中使用py(或py3)成功运行,但未使用CMD.exe或MSYS: py myscript.py 这个可执行文件是由Python3.7安装程序直接安装的,我为它配置了路径变量 安装VS 2017后,Microsoft将其特定于VS的py.exe副本的路径C:\Windows\py.exe插入系统path变量。此python副本在直接运行时不会执行任何操作,并且不会

在安装Visual Studio 2017之前,我的所有python文件都在PowerShell、Git Bash和Cygwin终端中使用py(或py3)成功运行,但未使用CMD.exe或MSYS:

py myscript.py
这个可执行文件是由Python3.7安装程序直接安装的,我为它配置了路径变量

安装VS 2017后,Microsoft将其特定于VS的py.exe副本的路径
C:\Windows\py.exe
插入系统
path
变量。此python副本在直接运行时不会执行任何操作,并且不会响应
exit()
命令来终止其线程,而脚本在传入时也不会执行任何操作。从字面上看,什么都不起作用,甚至连
print()
语句都不起作用

在Visual Studio中,打开“解决方案资源管理器”窗口,右键单击script.py并单击
启动而不调试后,将不会发生任何事情

如果单击“从调试开始”
,则会将视图更改为调试模式,并“运行”程序(显示暂停和停止按钮),但不会显示任何执行窗口。“输出”面板会自动选择“调试”,并且没有可查看的输出。“autos”和“locals”面板未填充,表示实际没有运行任何东西


我不想到处找工作。我知道我可以从PATH中删除这个条目,但是官方的Python安装可能与VS2017不兼容,或者可能缺少集成。我想知道为什么微软的
py.exe副本在所有方面都失败了,以及他们对此问题的官方解决方案是什么。

Visual Studio 2017使用PowerShell作为其shell/执行环境

该问题是由于PowerShell采用Cygwin执行环境的属性(包括虚拟路径)时出现了一些问题

这个问题随机应变地解决了。一秒钟后,PowerShell将其工作目录报告为
/cygdrive/c/folder/to/working/directory
,其行为与Cygwin终端完全相同。下次我运行PowerShell时,它运行正常,将这种输出返回到
pwd

PS C:\WINDOWS\system32> pwd

Path
---- 
C:\WINDOWS\system32
这个问题是两个问题的结合。第一个问题与py.exe不将Cygwin识别为交互式shell有关,如中所述

第二个问题是PowerShell采用Cygwin的执行环境。不确定这是如何发生的,或者为什么突然停止发生的。

这并不是一个正确的答案,因为我不确定这与您在Visual Studio 2017和PowerShell方面遇到的问题有什么关系,但既然您要求我将其作为一个问题发布,我就这样做了


Microsoft没有安装可执行文件
C:\Windows\py.exe,Python安装程序安装了

还要注意的是,它不是Python解释器,而是一个命令行“启动器”实用程序,用于在脚本文件开头查找特殊的shebang(
#!
前缀)注释。它使在Windows上运行Python脚本的工作方式与在Linux上类似,并且在系统上安装了多个Python版本(如2.x和3.x)时会有所帮助

请参阅中有关在Windows上使用Python的以下内容。另请参见Vinay Sajip(作者)的版本控制存储库,该存储库就是它的发源地

正如我在前言中所说的,我不确定这一切与你的问题有何关系,但我觉得了解事情的正常运作方式可能有助于你解决问题


希望您能发现它很有洞察力…

py.exe
不是Python解释器,它是一个“启动器”,在脚本开始时寻找特殊的shebang(
#!
)注释。看这个。另请看“martineau”,你能写下它作为问题的答案吗?