Не можете использовать python в интерактивном режиме на новом терминале msys-git?

4063
Darthfett

Недавно я обновил свой ноутбук, на котором установлена ​​32-разрядная версия Win7, а на моем новом ноутбуке установлена ​​64-разрядная версия Win7.

Я устанавливаю git 2.5.1 с git-scm.com и последние версии Python (3.4.3 и 2.7.10).

Во время установки я выбираю использовать новый (по умолчанию) терминал, который ранее не поставлялся с установкой, и запускаю терминал после завершения установки. Однако, когда я pythonпечатаю, я не вижу никакого вывода (курсор перемещается на следующую строку, когда я нажимаю ввод).

Я попытался ввести команды Python, такие как print('hello world'), и единственный вывод, который я могу получить, это ошибка синтаксиса, если я наберу что-то вроде a.4. Кажется, Python работает, но я не получаю вывод. Это происходит для любой версии Python, которую я запускаю.

Кажется, что Python нормально работает с альтернативным git на основе Windows cmd, но моя обычная консольная оболочка, Console2, похоже, не работает правильно, поэтому я не могу скопировать / вставить ее очень легко.

Любая идея о том, почему консоль msys не работает, или как я могу это исправить?

4

2 ответа на вопрос

6
Darthfett

From the installation wizard:

"Windows console programs (such as interactive Python) must be launched via <code>winpty</code> to work in MinTTY`

If you want to use the MinTTY terminal that comes with MSys2/Git, you have to launch console programs like Python using winpty.

As of Git for Windows 2.7.1, Winpty is included out of the box, and can be run like so:

winpty /path/to/python.exe 

winpty can be found installed at Git\usr\bin

Alternatively, you can always use bash aliasing to write a function in your .bashrc that may do what you want. Here is my solution for working around this new limitation:

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

Note that there are some issues related to using the arrow keys to retrieve command history in the python interactive mode.

4
Brad Sturtevant

Git использует Msys, а теперь есть и лучший, Msys2 !

Использование его и изменений, которые Git-SCM внес в Msys .profile, .bashrcпохоже, подходит мне.

Теперь вы можете легко обновить Msys2 с pacman

pacman -Syuu pacman -S winpty 

Git добавил хороший псевдоним для winpty:

case "$TERM" in xterm*) # The following *.exe programs are known to require a Win32 Console # for interactive usage, therefore let's launch them through winpty # when run inside `mintty`. for name in node python ipython php php5 psql do case "$(type -p "$name".exe 2>/dev/null)" in ''|/usr/bin/*) continue;; esac alias $name="winpty $name.exe" done ;; esac 

Чтобы получить ветку Git в Prompt, скопируйте файл, в который люди Git поместили свое приглашение, и поставьте его в своем .bashrc( .git-prompt.sh)

if test -f /etc/profile.d/git-sdk.sh then TITLEPREFIX=SDK-$ else TITLEPREFIX=$MSYSTEM fi  PS1='\[\033]0;$TITLEPREFIX:$\007\]' # set window title PS1="$PS1"'\n' # new line PS1="$PS1"'\[\033[32m\]' # change to green PS1="$PS1"'\u@\h ' # user@host<space> PS1="$PS1"'\[\033[35m\]' # change to purple PS1="$PS1"'$MSYSTEM ' # show MSYSTEM # PS1="$PS1"'\[\033[33m\]' # change to brownish yellow PS1="$PS1"'\[\033[34m\]' # change to pale blue PS1="$PS1"'\w' # current working directory if test -z "$WINELOADERNOEXEC" then GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)" COMPLETION_PATH="$" COMPLETION_PATH="$" COMPLETION_PATH="$COMPLETION_PATH/share/git/completion" if test -f "$COMPLETION_PATH/git-prompt.sh" then . "$COMPLETION_PATH/git-completion.bash" . "$COMPLETION_PATH/git-prompt.sh" PS1="$PS1"'\[\033[36m\]' # change color to cyan PS1="$PS1"'`__git_ps1`' # bash function fi fi PS1="$PS1"'\[\033[0m\]' # change color PS1="$PS1"'\n' # new line PS1="$PS1"'$ ' # prompt: always $ MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc 
Итак, вы предлагаете установить Msys2 до или после установки Msys-git? Кроме того, можете ли вы уточнить, что это значит ?: `Чтобы получить ветку Git, показанную в Prompt, скопируйте файл, в который люди Git поместили свою подсказку, и поставьте ее в свой .bashrc (.git-prompt.sh)` Darthfett 7 лет назад 0
@ cascer1 [ответ 1 из 2] У меня есть оба [Git for Win] (https://git-scm.com/download/win) и [Msys2] (https://sourceforge.net/p/msys2/wiki / MSYS2% 20установка /) установлена. В Msys2 вы можете установить Git вручную `pacman -S git git-flow`. Мне нравится подсказка `User @ BHost MINGW64 ~ / Develop / src / my-git-clone (разработка)`. Часть `(разработка)` - это то, что добавлено. Когда вы вводите каталог с помощью .git sub dir (проект Git), он отображает текущую ветку Git (развернуть). Люди из Git улучшили приглашение в Msys, создав файл `GitInstallDir \ etc \ profile.d \ git-prompt.sh`. Brad Sturtevant 7 лет назад 0
@ cascer1 [ответ 2 из 2] Вы можете добавить приглашение Git (в Msys2), сославшись на git-prompt.sh в вашем ~ / .bashrc, или скопировать / переименовать файл в ~ / .bash_prompt, затем в ~ / .bashrc, который я добавил `. "$ /. Bash_prompt.sh" `. Также можно просто скопировать псевдоним и запрос, как показано выше. Git for Win поставляется с winpty, а Msys2 - нет, как и `pacman -S winpty '. Не тестировал Msys2 без Git для Windows, но Msys2 хорошо работает с GitHub. Я рассматриваю файлы запуска Git for Win (.bashrc и т. Д.) Как примеры того, как настроить мои собственные. Brad Sturtevant 7 лет назад 0
@BradSturtevant Э-э, я не уверен, как ответить на это. Все, что я сделал, это отредактировал ваш пост, чтобы его было немного легче читать;). Вы можете увидеть, что я изменил [здесь] (http://superuser.com/posts/1143163/revisions) cascer1 7 лет назад 0
@ cascar1 Это был ваш комментарий о редактировании о предложении unintelagle, которое я пытался объяснить. Если бы у меня была привилегия редактирования :-) Brad Sturtevant 7 лет назад 0