【问题标题】:Can't run python in git terminal?无法在 git 终端中运行 python?
【发布时间】:2017-05-20 19:06:06
【问题描述】:

我在我的 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,当我按下回车键时它会转到下一行,并允许我继续输入,因为它出于某种原因对命令有更多期望。 ./python 未被识别为完整的命令,它正在等待关闭,就好像我有一个开放式引用但没有关闭式引用一样。不知道为什么。

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

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    为什么将 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 -i 强制 Python 使用交互模式。 mintty 隐藏了真正的控制台并将StandardInput 设置为一个名为\\.\pipe\msys-[UNIQUE_ID]-pty0-from-master 的管道,并将StandardOutput 设置为一个名为\\.\pipe\msys-[UNIQUE_ID]-pty0-to-master 的管道。管道不是 Windows 中的字符设备,因此 isatty 返回 false,因此 Python 以非交互模式启动,除非通过 -i 选项强制执行。

    【讨论】:

    • 忘了说遗憾的是我也这样做了 --- 作为记录,我对 linux 命令行非常熟悉。它只是挂起,当我按下回车键时,它会以闪烁的光标进入下一行,就像它期待更多输入一样,./python 未被识别为有效的独立命令。必须 ctrl+c 退出。
    • @Aerovistae 如果您在每个命令之前显示 pwd 也会有所帮助
    • 我考虑过添加它,但由于输出很长,它使它非常混乱。 Fwiw 我向你保证,这是我cd'd 进入的目录。当这些事情发生时,我出于偏执狂奔跑pwd,但没有什么可看的。
    • @Aerovistae 看到我的新答案
    • 除了在 bash 中修复PATH 如this answer建议的那样,您需要在普通 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 选项强制执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2022-11-17
    相关资源
    最近更新 更多