Python не работает в командной строке git bash


236

Python не будет работать в git bash (Windows). Когда я набираю python в командной строке, он выводит меня на пустую строку, не говоря о том, что он вошел в python 2.7.10, как и в Powershell. Это не дает мне сообщение об ошибке, но Python просто не работает.

Я уже убедился, что переменные среды в PATH включены c:\python27. Что еще я могу проверить?


Сессия, в которой возникает эта проблема, выглядит следующим образом:

user@hostname MINGW64 ~
$ type python
python is /c/Python27/python

user@hostname MINGW64 ~
$ python

... сидеть, не возвращаясь к приглашению.


2
"Ничего не произошло"? Вы даже не получили ошибку? (То есть: если вы получаете сообщение об ошибке, это должно быть частью вашего вопроса).
Чарльз Даффи

@recursive, bash действительно уважает PATH. (У него есть своя версия этой переменной, хотя).
Чарльз Даффи

11
Я не получаю сообщение об ошибке при вводе в Python. Это просто выводит меня на пустую строку, но не показывает, что питон действительно запущен
Кэролайн Моррис

4
@CharlesDuff, она дала понять, Чарльз, никаких сообщений об ошибках. Баш просто зависает. Замораживание терминала - это сообщение об ошибке.
Зеленый

1
@ Зеленый, как должно быть очевидно из моего ответа, это уже не вопрос ясности - и это не было в течение большей части года. Более того, вопрос был не столь ясен в этом вопросе, как сейчас, пока я не отредактировал его, чтобы сделать его недвусмысленным в отношении вопроса, следующего за комментарием ФП ранее в этой теме; проверь историю.
Чарльз Даффи

Ответы:


361

Просто введите это в вашей оболочке git на windows -> alias python='winpty python.exe', и это все, и у вас будет псевдоним исполняемого файла python. наслаждаться

PS Для постоянного добавления псевдонима см. Ниже,

cd ~
touch .bashrc

затем откройте .bashrc, добавьте команду сверху и сохраните файл. Вам нужно создать файл через консоль, иначе вы не сможете сохранить его с правильным именем. Вам также нужно перезапустить оболочку, чтобы применить изменения.


17
Работает как шарм.
Грин

4
Примечание: вам придется использовать функцию Python quit(), чтобы выйти из интерпретатора.
анишпатель

5
Вы также можете использовать (стандарт Windows) ^Z(Ctrl-Z) + returnдля выхода.
Эмиль Стирке

6
Также, если вы хотите установить псевдоним для «другого» питона, чем в Windows, вы можете установить полный путь к нему, используя следующий синтаксисalias python='winpty /c/Python27/python.exe'
ScottMcC

10
Это может быть лучшая вещь, которую я когда-либо нашел в Интернете.
mdw7326

79

Я не вижу следующей опции в списке ответов, но я могу получить интерактивную подсказку с ключом "-i":

$ python -i
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55)
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Аргумент -i: если в качестве первого аргумента передается сценарий или используется опция -c, войдите в интерактивный режим после выполнения сценария или команды, даже если sys.stdin не является терминалом. Файл PYTHONSTARTUP не читается. docs.python.org/3/using/cmdline.html#cmdoption-i
Меркурий

Это дороже, чем псевдоним python = 'winpty python.exe' ?
PYK

1
это вариант с нулевыми настройками, который работает на любом компьютере.
вав

58

Это известная ошибка в MSys2, которая предоставляет терминал, используемый Git Bash. Вы можете обойти это, запустив сборку Python без поддержки ncurses, или используя WinPTY , используя следующее:

Чтобы запустить консольную программу Windows в mintty или Cygwin sshd, добавьте console.exe в командную строку:

$ build/console.exe c:/Python27/python.exe
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 + 20
30
>>> exit()

В скомпилированных программ для MSYS , скорее всего , работать с Git Bash. (Проверьте, есть ли более новая версия, если прошло много времени с момента публикации этого ответа!).


Начиная с Git для Windows 2.7.1, также попробуйте использовать winpty c:Python27/python.exe; WinPTY может быть включен "из коробки".


2
Не могли бы вы объяснить, build/console.exe c:/Python27/python.exeнужно ли это запускать в консоли GitMsys или каким-либо другим способом?
0

@ h3d0, да, внутри терминала. Конечно, это предполагает, что buildэто каталог, который console.exeнаходится в; обновите путь соответствующим образом в зависимости от того, где и как вы его установили.
Чарльз Даффи

1
@ h3d0 Да, это дополнительное программное обеспечение; мой ответ включает в себя ссылку.
Чарльз Даффи

7
Я думаю, что вы можете использовать его как winpty c:/Python27/python.exe , не делая ничего дополнительного. Утилита winpty.exe находится по адресу Git \ usr \ bin. Я использую Git для Windows v2.7.1
Xun Yang

1
@XunYang, ... winpty уже в комплекте? Ницца! Отредактировано соответствующим образом.
Чарльз Даффи

47

Я пользователь Windows 10, и я установил GIT в моей системе, просто приняв значения по умолчанию.

Прочитав приведенные выше ответы, я получил 2 собственных решения, и эти 2 решения прекрасно работают на GIT bash и помогают мне выполнять выражения Python на GIT bash.

Я прилагаю 3 изображения моего GIT терминала bash. 1-й с проблемой, а 2-й в качестве решения.

ПРОБЛЕМА - Курсор просто ждет после нажатия pythonкоманды

введите описание изображения здесь

РЕШЕНИЕ 1

Выполнить winpty <path-to-python-installation-dir>/python.exeна GIT Bash Terminal.

Примечание: не используйте C:\Users\Adminстиль пути как в GIT bash, вместо этого используйте /C/Users/Admin.

В моем случае я выполнил winpty /C/Users/SJV/Anaconda2/python.exeкоманду на GIT bash

Или, если вы не знаете свое имя пользователя, выполнитеwinpty /C/Users/$USERNAME/Anaconda2/python.exe

введите описание изображения здесь

РЕШЕНИЕ 2

Просто введите python -iи это все.

введите описание изображения здесь

Спасибо.


2
Я обнаружил, что winptyэто также будет работать с Windows Python Launcher, поэтому все, что вам нужно, например, alias py='winpty py'в вашем .bashrc, а затем вернуться к нормальной жизни.
Карл

Да, это зависит от вас, как вы управляете вещами, чтобы сделать вашу жизнь лучше.
Hygull


8

В дополнение к ответу @ Charles-Duffy, вы можете использовать winpty напрямую, не устанавливая и не скачивая ничего лишнего. Просто бегиwinpty c:/Python27/python.exe . Утилита winpty.exe находится по адресу Git \ usr \ bin. Я использую Git для Windows v2.7.1

Предварительно скомпилированные двоичные файлы из @ Charles-Duffy имеют версию 0.1.1 (в соответствии с именем файла), а включенный - 0.2.2.


8

Git Bash Обходной путь - Запустите Python 2 и Python 3 с псевдонимами

HI . Это (для меня) лучшее решение для запуска обоих Python (Python 2.7 и Python 3.x) напрямую из Git Bash на Win 10 => добавление псевдонимов в файл псевдонимов, для которых Git Bash использует.

Git Bash файл псевдонимов - aliases.sh . Это находится в:

C:\path where you installed Git\etc\profile.d\aliases.sh

1) Откройте (с помощью текстового редактора, такого как Atom или другой) файл aliases.sh

например: в моем случае файл находится в C:\Software\Develop\Git\etc\profile.d\aliases.sh

2) Добавьте свой псевдоним для Python

В моем случае КНИГУ python.exe установлены в:

C:\Networking\Network Automation\Python 2.7\python.exe
C:\Networking\Network Automation\Python 3.7\python.exe

Таким образом, вы должны создать 2 псевдонима, один для Python 2 ( я назвал python2 ), а другой для Python 3 ( я назвал просто python ). Git Bash использует файловую структуру linux, поэтому вам нужно изменить «\» для «/» и если вы есть путь, как в моем примере Network Automation вы положили его с ""

«Автоматизация сети» , например

winpty - это волшебная команда, которая вызывает исполняемый файл.

Так что добавьте эти строки в начале aliases.sh

alias python2='winpty C/Networking/"Network Automation"/"Python 2.7"/python.exe'
alias python='winpty C/Networking/"Network Automation"/"Python 3.7"/python.exe'

3) Добавить или изменить другие псевдонимы (если хотите)

Я также изменил псевдоним ll, чтобы показать все файлы и в удобочитаемом списке:

alias ll='ls -lah'

4) Сохраните файл aliases.sh


5) ОК !!! закройте и перезапустите ваш Git Bash

Теперь вы можете постоянно запускать оба Python непосредственно из оболочки Git, просто записывая

$ python -> запустить Python 3

$ python2 -> запустить Python 2

$ ll -> вводит ls -lah, чтобы быстро показать ваш подробный список файлов

Ура, Гарри


5

Вы можете изменить цель для ярлыка Git Bash из:

"C:\Program Files\Git\git-bash.exe" --cd-to-home 

в

"C:\Program Files\Git\git-cmd.exe" --no-cd --command=usr/bin/bash.exe -l -i

Так ConEmu запускал git bash (версия 16). Последняя версия запускает это нормально и вот как я туда попал ...


Это сработало для меня 👍. Стоит отметить, что делают аргументы bash.exe? Страница man говорит -l: заставьте bash действовать так, как если бы он был вызван как оболочка входа в систему -i: если параметры -i присутствуют, оболочка является интерактивной
День

Раньше у меня ConEmu работала нормально, без winpty, и я полностью забыла, что я сделала. Спасибо, это сработало так, как было раньше!
Чез

5

наберите: 'winpty python' и он будет работать

У gitbash есть некоторые проблемы при запуске любой команды, которая начинается с python. это относится и к любым командам python manage.py. Всегда начинайте с 'winpty python manage.py'. По крайней мере, это то, что мне подходит. Под управлением Windows 10.


2

В дополнение к @Vitaliy Terziev ответ

попробуйте touch .bash_profileи затем добавьте псевдоним в файл.


1
Я использовал .bashrc, но когда я открыл Git Bash, я получил предупреждение о том, что bashrc существует без .bash_profile. Я переименовал .bashrc в .bash_profile, и теперь предупреждение исчезло. Спасибо.
Джастин Даниелсон

2

2 обходных пути, а не решение: в моем Git Bash зависает следующая команда, и я не получаю приглашение обратно:

% python

Поэтому я просто использую:

% winpty python

Как уже отмечали некоторые люди, вы также можете использовать:

% python -i

,


1

Я использую MINGW64 через Visual Studio Code на Windows 10 и пытаюсь установить node-sass(что требует python2). Я следовал за felixrieseberg / windows-build-tools # 56 на Github, который решил мою проблему.

Это особый случай, но я пишу на тот случай, если у кого-то возникнет такая же проблема:

npm --add-python-to-path='true' --debug install --global windows-build-tools

Это устанавливает Python и другие необходимые инструменты для сборки %USERPROFILE%\.windows-build-tools\python27.


1

Для python версии 3.7.3 в vscode с gitbash в качестве терминала по умолчанию я некоторое время занимался этим, а затем следовал совету @Vitaliy Terziev по добавлению псевдонима в .bashrc, но со следующей спецификацией:

псевдоним python = '«/ c / Пользователи / мое имя пользователя / AppData / Local / Программы / Python / Python37 / python.exe»'

Обратите внимание на сочетание одинарных и двойных кавычек из-за пробелов «мое имя пользователя».

Для меня "winpty" не может разрешить путь Python в vscode.


0

Другим примером этой проблемы является использование интерфейса командной строки AWS Elastic Beanstalk (awsebcli, eb cli) из git bash (MINGW64, Mintty) в Windows (с использованием git версии 2.19.0.windows.1).

Я просто публикую это, потому что мне потребовалось некоторое время, чтобы оказаться здесь в поиске eb-cliконкретных проблем.

Такие команды, как eb initили eb config save, которые требуют ввода пользователя, по- видимому, вызывают зависание / зависание. В действительности, я думаю, консоль не обновляется текстом, запрашивающим ввод пользователя. Более того, eb deployобновляет текст консоли только после завершения команды, поэтому я не вижу обновления прогресса до ее завершения.

Как упоминалось в заметках о выпуске git для windows (для v2.19.0) и, например, в ответе Сюнь Янга , обходной путь должен запускаться

winpty eb <command>(вместо просто eb <command>)

Альтернативой, как предложено в этой проблеме git для Windows , может быть использование родной консоли Windows вместо mintty (опция во время установки git).


0

Тот, который работал для меня, как упоминалось ранее в этих замечательных ответах выше, это псевдоним следующим образом: (Я использую anaconda, поэтому сначала найдите где находится путь к Python, а затем добавьте его в псевдоним на git bash). 1. на терминале anaconda я запускаю: where python 2. на git bash запускаю: alias python='winpty "C:\ProgramData\Anaconda3\envs\your_env_name\python.exe"' 3. Готово. Python определяется внутри git Bash с использованием псевдонима.

Спасибо (Виталий Терзиев & Hygull) за их очень полезные ответы.


0
  1. python.exe -iработает, но возникли проблемы при выходе из интерактивного режима путем отправки «^ Z» (CTRL + Z). Так что, похоже, лучше использовать winpty python.exeв Git Bash для Windows.

  2. Используйте ~/binкаталог для создания файла переноса / ссылки (например ~/bin/python), который будет доступен везде (вы можете использовать другую ссылку на версию, например ~/bin/python37).
    Код внутри файла:

#!/usr/bin/env bash
# maybe declare env vars here like
# export PYTHONHOME=/c/Users/%USERNAME%/.python/Python36
# export PATH="${PATH}:/c/Users/%USERNAME%/.python/Python36"

# replace %USERNAME%,
# or use "~" instead of "/c/Users/%USERNAME%" if it works
winpty /c/Users/%USERNAME%/.python/Python36/python.exe ${@}

Мне просто не нравятся эти «волшебные» псевдонимы, о которых вы всегда забываете, откуда они берутся, а в некоторых случаях иногда приводят к проблемам.

  1. Используйте ~/bin/pythonфайл и -iпараметр:
#!/usr/bin/env bash
if [ -z "${@}" ]; then
    # empty args, use interactive mode
    /c/Users/%USERNAME%/.python/Python36/python.exe -i
else
    /c/Users/%USERNAME%/.python/Python36/python.exe ${@}
fi

19480756 [sig] bash 2740! sigpacket::process: Suppressing signal 18 to win32 process (pid 14820)- пример ответа после отправки в ^Zинтерактивном режиме под управлениемpython.exe -i
Кирби

0

Введите команду PY вместо Python. Вызов переводчика (python.org).


-2

Посмотрите на этот ответ:

Git Bash не запускает мои файлы python?

путь в Git Bash должен быть установлен так:

PATH=$PATH:/c/Python27/

2
Вообще-то, нет! Я могу воспроизвести проблему OP, и python находится в PATH без проблем. См. Sourceforge.net/p/msys2/tickets/32
Чарльз Даффи

Сообщение OP предполагает, что PATH не проблема.
Хилтон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.