Git 2.5.1 的 bash 控制台不打开 python 解释器

Posted

技术标签:

【中文标题】Git 2.5.1 的 bash 控制台不打开 python 解释器【英文标题】:Git 2.5.1's bash console doesn't open python interpreter 【发布时间】: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 "" 有效。这个问题似乎只与交互式外壳有关 【参考方案1】:

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

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

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

alias python=winpty py.exe

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


    如果没有参数,请编写一个 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

    以交互模式显式启动 python

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

py -i

或者对于脚本:

py script.py

什么是 py.exe?

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

它已安装 较新的 Python (Python 3.3+) 安装 理解并尝试使用shebang lines中指定的python安装 它适用于Virtual Environments (shebang line example for venv)

要更改您的首选/系统安装(例如交互模式),请参阅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 一起使用。

以上是关于Git 2.5.1 的 bash 控制台不打开 python 解释器的主要内容,如果未能解决你的问题,请参考以下文章

win10安装git,打开git bash闪退

如何在 Windows 资源管理器中添加“在此处打开 git-bash ...”上下文菜单?

在git bash上操作Git

Git Bash输错账号密码如何重新输入

设置 git bash 以使用 Windows 上的选项卡

Git:修改Git Bash默认打开位置(win10)