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. Це просто переводить мене в порожній рядок, але не показує, що пітон дійсно працює
Caroline Morris

4
@CharlesDuff, вона зрозуміла, Чарльз, жодних повідомлень про помилки. Баш просто замерзає. Замороження терміналу - це повідомлення про помилку.
Зелений

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

Відповіді:


361

Просто введіть це у свою git shell на windows -> alias python='winpty python.exe', це все, і у вас буде псевдонім виконуваного python. Насолоджуйтесь

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

cd ~
touch .bashrc

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


17
Працює як шарм.
Зелений

4
Примітка. quit()Щоб уникнути інтерпретатора, вам доведеться використовувати функцію Python .
anishpatel

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
це варіант із нульовим зусиллям налаштування, який працює на будь-якому комп’ютері.
vav

58

Це відома помилка в MSys2, яка забезпечує термінал, використовуваний Git Bash. Ви можете обійти його, запустивши збірку Python без підтримки ncurses або використовуючи WinPTY , використовуваний у такий спосіб:

Щоб запустити програму консолі Windows на монетному дворі або 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- терміналу. Перший з проблемою і останній 2 як рішення.

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

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

РІШЕННЯ 1

Виконати winpty <path-to-python-installation-dir>/python.exeна базі терміналу GIT .

Примітка. Не використовуйте 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 on Win 10 => додавання псевдонімів у файл псевдонімів, для якого використовується Git Bash.

Git Bash файл псевдонімів є aliases.sh . Він розташований у:

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

1) Відкрийте (за допомогою текстового редактора типу Atom чи іншого) псевдоніми.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 - це магічна команда, яка викликатиме виконуваний файл.

Тому додайте ці рядки на початку alias.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) Збережіть файл aliasses.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 page говорить -l: Зробіть bash діяти так, ніби його викликали як оболонку для входу -i
День

У мене раніше ConEmu працював нормально, без winpty, і я зовсім забув, що робив. Спасибі це працювало так само, як було раніше!
час

5

type: 'winpty python', і він буде працювати

gitbash має деякі проблеми при виконанні будь-якої команди, яка починається з python. це стосується і будь-яких команд python Manag.py. Завжди починайте з "winpty python Manag.py" Принаймні, це для мене працює. Запуск Windows 10.


2

Окрім відповіді @Віталія Терзієва

спробуйте, touch .bash_profileа потім додайте псевдонім у файл.


1
Я використовував .bashrc, але коли я відкрив Git Bash, мені надійшло попереджувальне повідомлення про те, що bashrc існує w / oa .bash_profile. Я перейменував .bashrc у .bash_profile, і тепер попередження пройшло. Дякую.
JustinDanielson

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, але з наступною специфікацією:

alias python = '"/ c / Користувачі / моє ім'я користувача / AppData / Місцеві / Програми / 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 замість м'яти (опція під час встановлення git).


0

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

Дякуємо (Віталій Терзієв та Чайка) за дуже корисні відповіді.


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
Насправді ... ні! Я можу відтворити проблему ОП, і python знайдеться в PATH без проблем. Дивіться sourceforge.net/p/msys2/tickets/32
Чарльз Даффі

Пост ОП свідчить, що PATH не є проблемою.
Хілтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.