【问题标题】:Git 2.5.1's bash console doesn't open python interpreterGit 2.5.1 的 bash 控制台不打开 python 解释器
【发布时间】:2015-12-03 22:46:52
【问题描述】:

如果我在 CMD 中执行它,它可以正常工作,但如果我在 Git Bash 中尝试它就不起作用。我喜欢使用 Git Bash 作为我唯一的控制台,但如果它不适用于 Python 3.4,我就不能这样做。

示例如下图所示。这可以很容易地复制。卸载 Python 和 Git(如果已安装),安装 Python 3.4,安装 Git 2.5.1,然后您就会得到结果。

如何让 Python 解释器在 Git Bash 中工作?

【问题讨论】:

  • 我遇到了同样的问题。你找到解决方法了吗?运行 python -c "" 有效。这个问题似乎只与交互式外壳有关

标签: python git bash


【解决方案1】:

作为 Git 的新默认终端的 MinTTY 终端根本不支持 Windows 控制台程序。我不知道为什么决定更改默认终端,但我知道一些解决此问题的方法:

  1. 编写一个 Bash 别名以使用 winpty 启动 python

Bash 别名(放入您的 .bashrc):

alias python=winpty py.exe

注意:从 Git for Windows 2.7.1 开始,Winpty 是开箱即用的。 winpty 安装在Git\usr\bin


  1. 如果没有参数,请编写一个 Bash 别名以交互模式启动 python:

Bash 别名(放入您的 .bashrc):

function maybe_py() {
    if [ $# -eq 0 ]; then
        /c/Windows/py.exe -i
    else
       /c/Windows/py.exe $@
    fi
}

alias python=maybe_py

  1. 以交互模式显式启动 python

请注意,使用箭头键浏览命令历史记录可能无法正常工作:

py -i

或者对于脚本:

py script.py

什么是 py.exe?

如果您想知道为什么我引用 C:\Windows\py.exe 而不是特定的 python.exe 安装,我想解释一下使用它的一些好处(Python Launcher for Windows

要更改您的首选/系统安装(例如交互模式),请参阅this answer

【讨论】:

  • 对自己的评论:python -i 如果您尝试使用箭头键检索命令历史记录,则使用新的 git bash 控制台并不总是能正常工作。它似乎在输出中向上移动光标,就好像它是一个文本编辑器一样。
  • @Sushil 我刚刚研究并看到了更新here。 MinTTY 终端似乎不支持开箱即用的 windows 控制台程序,但如果您安装 Git For Windows 2.7.1 或更高版本,则可以使用开箱即用的 Winpty 运行 python。我已经适当地更新了答案。
  • 仅供参考:当您的脚本使用 getpass.getpass() 时会出现同样的症状,而 python -i your_script.py 不会修复它,但 winpty python your_script.py 就像一个魅力。幸运的是,他们至少为最新版本的 Git For Windows 提供了开箱即用的 Winpty。
  • 我认为您需要在别名周围加上引号,因为它包含一个空格。
  • 为我工作:alias python="winpty python.exe"
【解决方案2】:

在安装 git for windows 时,选择使用 windows 默认控制台窗口,如picture 所示。 此选项允许您使用交互式 python 或 nodejs。 getpass 也适用于这个控制台。

【讨论】:

    【解决方案3】:

    安装git for windows时,选择使用windows默认控制台窗口,如下图所示。 此选项允许您使用交互式 python 或 nodejs。 getpass 也适用于这个控制台。

    enter image description here

    【讨论】:

      【解决方案4】:

      以@Darthfett 的回答为基础。我必须确保有引号,而不是引用 .exe 文件

      所以最后在你的.bashrc

      alias python='winpty python' alias pip='winpty pip' # Rescue pip as well

      然后就是全部了

      Python

      Tawanda@Tawanda-PC MINGW64 ~
      $ alias python='winpty python'
      
      Tawanda@Tawanda-PC MINGW64 ~
      $ python
      Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
      Type "help", "copyright", "credits" or "license" for more information.
      >>> exit()
      

      Tawanda@Tawanda-PC MINGW64 ~
      $ alias pip='winpty pip'
      
      Tawanda@Tawanda-PC MINGW64 ~
      $ pip -v
      
      Usage:
        pip <command> [options]
      
      Commands:
        install                     Install packages.
        download                    Download packages.
        uninstall                   Uninstall packages.
        freeze                      Output installed packages in requirements format.
        list                        List installed packages.
        show                        Show information about installed packages.
      

      【讨论】:

        【解决方案5】:

        感谢@darthfett 的answer,这在很大程度上解决了问题!

        仅供参考:当您的脚本使用import getpass; getpass.getpass() 时,同样的症状也存在,在这种情况下python -i your_script.py 不会修复它,但winpty python your_script.py 仍然像一个魅力。 (幸运的是,他们至少为最新版本的 Git For Windows 提供了开箱即用的 Winpty。)

        因此,要设置一次(每个虚拟环境)并忘记它,您可以将此行附加到 env/Script/activate 的末尾:

        alias python='winpty python.exe'
        

        它将在那个 bash 控制台中工作。 (不过,如果你碰巧是 vim 用户,当你在 vim 中执行 :python my_script.py 时,它仍然无法在 vim 中工作。)

        【讨论】:

          【解决方案6】:

          它正在尝试打开控制台以进行输出。除非您编译 python 或获得 mingw 的版本,否则您可能需要以下内容:

          WinPty

          【讨论】:

            【解决方案7】:

            需要显式python交互模式:python -i

            您可以在 .bashrc 中定义别名:alias python='python -i',但这样做,您将无法运行脚本文件(即:python script.py)。

            在这里找到: Using Windows Python from Cygwin

            【讨论】:

            • 如果您尝试使用箭头键检索命令历史记录,则 python -i 与新的 git bash 控制台并不总是能正常工作。它似乎在输出中向上移动光标,就好像它是一个文本编辑器一样。
            • 是的,这是真的。很遗憾,但这是我发现解释器工作的唯一方法。
            • 如果你运行winpty python,那么你会得到带有箭头键的python控制台,^Z + Return退出控制台
            【解决方案8】:

            您可以通过编辑“$HOME/.bashrc”中的文件来配置 git bash 控制台

            将此行添加到您的$HOME/.bashrc

            export PATH=$PATH;c:/python34
            

            【讨论】:

            • $HOME/.bashrc 默认不存在。创建它并添加该行,然后重新启动 Git Bash 并不能使其与 Python 一起使用。
            猜你喜欢
            • 2010-09-25
            • 1970-01-01
            • 1970-01-01
            • 2010-10-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-04-06
            • 2022-08-05
            相关资源
            最近更新 更多