无法在git终端中运行python?

时间:2017-01-06 03:43:34

标签: python windows mingw git-bash mingw-w64

我在我的Win7系统上安装了python 3.6,并试图让它在git bash(MINGW64)中工作,到目前为止无济于事。

我已经将安装目录(当然不是.exe)添加到PATH,没有结果。

即使我直接cd到安装目录,它也看不到它。

$ python
bash: python: command not found
$ echo $PATH
/c/Users/Aerovistae/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/Aerovistae/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Program Files/Intel/WiFi/bin:/c/Program Files/Common Files/Intel/WirelessCommon:/cmd:/c/Program Files (x86)/Skype/Phone:/c/Program Files/Intel/WiFi/bin:/c/Program Files/Common Files/Intel/WirelessCommon: C:/Users/Aerovistae/AppData/Local/Programs/Python/Python36-32:/usr/bin/vendor_perl:/usr/bin/core_perl
$ cd C:/Users/Aerovistae/AppData/Local/Programs/Python/Python36-32
$ python
bash: python: command not found
$ python.exe
bash: python.exe: command not found

如果我从该目录中尝试./python,当我按下Enter键时它会转到下一行,并允许我继续输入,因为由于某种原因它会对命令有更多的期望。 ./python未被识别为完整的命令,它正在等待关闭,就像我有一个开放报价但没有关闭报价。无法弄清楚原因。

我在这里缺少什么?为什么即使我在目录中也不能运行.exe?

旁注,为什么它显示PATH有冒号分隔符而不是分号分隔符?

2 个答案:

答案 0 :(得分:5)

  

为什么它将PATH显示为具有冒号分隔符而不是分号分隔符?

因为bash使用:作为路径分隔符。这意味着PATH环境变量中的C:/yadda/yadda被解析为两个目录:C/yadda/yadda。如果仔细查看echo $PATH输出,您会看到许多条目以/c/开头。 python安装的条目是唯一使用C:/的条目。在.bashrc或.profile中设置PATH时,应使用/c/表示法。

:之前和之后,还要注意路径名和空间中的空格。前者肯定是有问题的。我不确定后者,因为在设置PATH时我从不在此位置添加空格。

  

如果我从该目录中尝试./python,当我按下Enter键时它会转到下一行,并允许我继续键入,因为由于某种原因它会对命令有更多的期望。

根据@eryksun的评论:

您需要在普通Windows控制台中运行bash.exe,或者如果使用mintty终端,则强制Python通过python -i使用交互模式。 mintty隐藏真实控制台并将StandardInput设置为名为\\.\pipe\msys-[UNIQUE_ID]-pty0-from-masterStandardOutput的管道到名为\\.\pipe\msys-[UNIQUE_ID]-pty0-to-master的管道。管道不是Windows中的字符设备,因此isatty返回false,因此Python以非交互模式启动,除非通过-i选项强制执行。

答案 1 :(得分:0)

尝试在git bash上使用此命令:alias python='winpty python.exe 如果您可以正常使用Python并且可以毫无问题地输出和输入,则可以在.bashrc配置文件中添加该命令(通常位于.git和.mintty配置文件的同一目录中(在Windows上的用户名下)。

我不知道winpty实际上做了什么,但我想这就是它在这里描述的内容:https://github.com/rprichard/winpty