4

Недавно я обновил свой ноутбук, на котором установлена 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 ответа2

6

Из мастера установки:

«Консольные программы Windows (такие как интерактивный Python) должны быть запущены через <code> winpty </code> для работы в MinTTY`

Если вы хотите использовать терминал 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.

4

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .