我在我的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
有冒号分隔符而不是分号分隔符?
答案 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-master
和StandardOutput
的管道到名为\\.\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