Не можете использовать python в интерактивном режиме на новом терминале msys-git?
Недавно я обновил свой ноутбук, на котором установлена 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 не работает, или как я могу это исправить?
2 ответа
Из мастера установки:
Если вы хотите использовать терминал MinTTY, который поставляется с MSys2/Git, вы должны запускать консольные программы, такие как Python, используя winpty.
Начиная с Git для Windows 2.7.1, Winpty включен из коробки и может быть запущен так:
winpty /path/to/python.exe
winpty можно найти установленным на Git\usr\bin
Кроме того, вы всегда можете использовать псевдонимы bash, чтобы написать функцию в вашем.bashrc, которая может делать то, что вы хотите. Вот мое решение для обхода этого нового ограничения:
function maybe_python34() {
if [ $# -eq 0 ]; then
/c/Python34/python.exe -i
else
/c/Python34/python.exe $@
fi
}
alias python=maybe_python34
Обратите внимание, что существуют некоторые проблемы, связанные с использованием клавиш со стрелками для извлечения истории команд в интерактивном режиме Python.
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-${MSYSTEM#MINGW}
else
TITLEPREFIX=$MSYSTEM
fi
PS1='\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\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="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
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