繁体   English   中英

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

[英]Git 2.5.1's bash console doesn't open python interpreter

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

示例如下图所示。 这可以很容易地再现。 卸载Python和Git(如果已安装),安装Python 3.4,安装Git 2.5.1并获得该结果。

安慰

如何让Python解释器在Git Bash中运行?

MinTTY终端是Git的新默认终端,它不支持Windows控制台程序。 我不知道为什么决定更改默认终端,但我知道有几种方法可以解决这个问题:

  1. 写一个Bash别名来用winpty启动python

Bash别名(放在你的.bashrc中):

alias python=winpty py.exe

注意 :从Git for Windows 2.7.1开始,Winpty开箱即用。 可以在Git\\usr\\bin找到winpty。


  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安装,我想解释一下使用它的一些好处( 适用于WindowsPython启动器

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

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

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

在这里找到: 使用Cygwin的Windows Python

建立@ Darthfett的答案。 我必须确保有引号,而不是引用.exe文件

所以最后你的.bashrc

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

一切都是有效的

蟒蛇

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.

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

WinPty

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

仅供参考:当您的脚本使用import getpass; getpass.getpass()时,也存在相同的症状import getpass; getpass.getpass() 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中使用:python my_script.py 。)

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

将此行添加到$HOME/.bashrc

export PATH=$PATH;c:/python34

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

在此输入图像描述

当安装Windows的混帐,选择使用Windows默认的控制台窗口,如图所示画面 此选项允许您使用交互式python或nodejs。 getpass也适用于此控制台。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM