Подтвердить что ты не робот

Git 2.5.1 bash консоль не открывает интерпретатор python

Если я делаю это в CMD, он работает без проблем, но если я попробую его в Git Bash, это не сработает. Мне нравится использовать Git Bash в качестве моей единственной консоли, но я не могу этого сделать, если она не работает с Python 3.4.

Пример приведен на рисунке ниже. Это можно легко воспроизвести. Удалите Python и Git, если они установлены, установите Python 3.4, установите Git 2.5.1 и получите этот результат.

Консоль

Как я могу заставить интерпретатор Python работать в Git Bash?

4b9b3361

Ответ 1

Терминал MinTTY, который является новым терминалом по умолчанию для Git, просто не поддерживает консольные программы Windows. Я не знаю, почему было принято решение изменить терминал по умолчанию, но я знаю несколько способов обойти это:

  • Напишите псевдоним Bash для запуска python с winpty

Bash Псевдоним (введите в .bashrc):

alias python=winpty python.exe

Примечание. Начиная с Git для Windows 2.7.1, Winpty включен из коробки. winpty можно найти в Git\usr\bin.


  1. Напишите псевдоним Bash для запуска python в интерактивном режиме, если нет аргументов:

Bash Псевдоним (введите в .bashrc):

function maybe_python34() {
    if [ $# -eq 0 ]; then
        /c/Python34/python.exe -i
    else
       /c/Python34/python.exe [email protected]
    fi
}

alias python=maybe_python34

  1. Запустить питон в интерактивном режиме явно

Обратите внимание, что это может работать неправильно с помощью клавиш со стрелками для просмотра истории команд:

python -i

Или для скриптов:

python script.py

Ответ 2

Вам нужен явный интерактивный режим python: python -i

Вы можете определить псевдоним в вашем .bashrc: alias python = 'python -i', но при этом вы не сможете запустить файл script (то есть: python script.py).

Найдено здесь: Использование Windows Python из Cygwin

Ответ 3

Он пытается открыть консоль для вывода. Если вы не скомпилируете python или не получите версию для mingw, вам может понадобиться что-то вроде:

WinPty

Ответ 4

Вы можете настроить консоль git bash, отредактировав файл в "$ HOME/.bashrc"

Добавьте эту строку в свой $HOME/.bashrc

export PATH=$PATH;c:/python34

Ответ 5

Спасибо за @darthfett answer, что в значительной степени решает проблему!

Только FYI: тот же симптом существует, когда ваш script использует import getpass; getpass.getpass(), и в этом случае python -i your_script.py НЕ исправит его, но winpty python your_script.py по-прежнему работает как шарм. (К счастью, они по крайней мере предоставляют Winpty из коробки с последними версиями Git Для Windows.)

Итак, чтобы установить один раз (для каждой виртуальной среды) и забыть об этом, вы можете добавить эту строку в конце своего env/Script/activate:

alias python='winpty python.exe'

Он будет работать в консоли bash. (Однако, если вы оказались пользователем vim, он все равно не будет работать внутри vim, когда вы выполняете :python my_script.py в vim.)

Ответ 6

Основываясь на ответе @Darthfett. Я должен был убедиться, что есть кавычки и не ссылаются на файлы .exe.

Итак, в конце в .bashrc

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

Затем все работает

Python

[email protected] MINGW64 ~
$ alias python='winpty python'

[email protected] 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()

Pip

[email protected] MINGW64 ~
$ alias pip='winpty pip'

[email protected] 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.