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

Git 2.5.1's bash console doesn't open python interpreter

如果我在cmd中这样做,它就可以毫无问题地工作,但是如果我在gitbash中尝试它,它就不工作了。我喜欢使用Git-Bash作为我唯一的控制台,但是如果它不适用于Python3.4,我就不能这样做。

如下图所示。这很容易复制。卸载python和git(如果安装了它们),安装python 3.4,安装git 2.5.1,然后得到结果。

Console

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


Mintty终端是Git的新默认终端,它不支持Windows控制台程序。我不知道为什么决定更改默认终端,但我知道一些解决方法:

  • 编写bash别名以使用winpty启动python
  • bash别名(放入.bashrc中):

    1
    alias python=winpty py.exe

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

  • 如果没有参数,则编写bash别名以在交互模式下启动python:
  • bash别名(放入.bashrc中):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    function maybe_py() {
        if [ $# -eq 0 ]; then
            /c/Windows/py.exe -i
        else
           /c/Windows/py.exe $@
        fi
    }

    alias python=maybe_py
  • 以交互模式显式启动python
  • 请注意,使用箭头键浏览命令历史记录可能无法正常工作:

    1
    py -i

    或脚本:

    1
    py script.py

    什么是PY.EXE?

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

    • 它与更新的python(python 3.3+)安装在一起。
    • 它理解并尝试在shebang行中使用指定的python安装。
    • 它适用于虚拟环境(例如,shebang line for venv)

    有关更改首选/系统安装(例如,对于交互模式),请参阅此答案。


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

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

    在这里找到:从cygwin使用windows python


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

    所以最后在你的电脑里


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

    那就一切都好了

    Python

    1
    2
    3
    4
    5
    6
    7
    8
    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()

    匹普

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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.

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

    温蒂


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

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

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

    1
    alias python='winpty python.exe'

    它将在bash控制台中工作。(但是,如果您碰巧是一个VIM用户,那么当您在VIM中执行:python my_script.py操作时,它仍然无法在VIM中工作。)


    安装Git for Windows时,选择使用Windows默认控制台窗口,如图所示。此选项允许您使用交互式python或nodejs。getpass也在这个控制台上工作。


    安装Git for Windows时,选择使用Windows默认控制台窗口,如下图所示。此选项允许您使用交互式python或nodejs。getpass也在这个控制台上工作。

    在此处输入图像描述


    您可以通过在"$home/.bashrc"中编辑文件来配置git bash控制台。

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

    1
    export PATH=$PATH;c:/python34