Não é possível usar python no modo interativo no novo terminal msys-git?

4

Atualizei recentemente meu laptop, que executava um Win7 de 32 bits, e meu novo laptop executa uma instalação do Win7 de 64 bits.

Estou instalando o git 2.5.1 do git-scm.com e as versões mais recentes do python (3.4.3 e 2.7.10).

Durante a instalação, escolho usar o novo terminal (padrão) que não veio anteriormente com a instalação e inicie o terminal após a conclusão da instalação. Quando eu digito python , no entanto, não vejo nenhuma saída (o cursor se move para a próxima linha quando eu pressiono enter).

Eu tentei entrar em comandos python, como print('hello world') , e a única saída que posso obter é um erro de sintaxe se eu digitar algo como a.4 . Parece python está sendo executado, mas não estou recebendo nenhuma saída. Isso acontece para qualquer versão do python que eu executo.

Python parece rodar normalmente com o git alternativo baseado no Windows cmd, mas meu wrapper de console normal, o Console2 não parece estar funcionando corretamente, então eu não posso copiar / colar com ele muito facilmente.

Alguma idéia de por que o console msys não está funcionando ou como posso consertar isso?

    
por Casey Kuball 01.09.2015 / 00:51

2 respostas

6

Do assistente de instalação:

" Os programas de console do Windows (como o Python interativo) devem ser iniciados por meio de < code & win; code < / code > para trabalhar no MinTTY

Se você quiser usar o terminal MinTTY que vem com o MSys2 / Git, você tem que lançar programas de console como o Python usando winpty.

A partir do Git for Windows 2.7.1, o Winpty é incluído fora da caixa e pode ser executado assim:

winpty /path/to/python.exe

winpty pode ser encontrado instalado em Git\usr\bin

Alternativamente, você sempre pode usar o bash aliasing para escrever uma função em seu .bashrc que pode fazer o que você quer. Aqui está a minha solução para contornar essa nova limitação:

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

alias python=maybe_python34

Observe que há alguns problemas relacionados ao uso das teclas de seta para recuperar o histórico de comandos no modo interativo do python.

    
por 01.09.2015 / 01:03
4

O Git utiliza o Msys, e existe um melhor agora, Msys2 !

O uso dele e as modificações que o Git-SCM fez no Msys relataram .profile , .bashrc parece ser o caminho a seguir para mim.

Agora você pode atualizar facilmente o Msys2 com o pacman

pacman -Syuu
pacman -S winpty

O Git adicionou um bom apelido para 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

Para fazer com que a ramificação do Git seja mostrada em Prompt, copie o arquivo que o Git pessoal colocou no seu prompt e o coloque no seu .bashrc ( .git-prompt.sh )

if test -f /etc/profile.d/git-sdk.sh
then
    TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
    TITLEPREFIX=$MSYSTEM
fi

PS1='\[3]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}
pacman -Syuu
pacman -S winpty
7\]' # set window title PS1="$PS1"'\n' # new line PS1="$PS1"'\[3[32m\]' # change to green PS1="$PS1"'\u@\h ' # user@host<space> PS1="$PS1"'\[3[35m\]' # change to purple PS1="$PS1"'$MSYSTEM ' # show MSYSTEM # PS1="$PS1"'\[3[33m\]' # change to brownish yellow PS1="$PS1"'\[3[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"'\[3[36m\]' # change color to cyan PS1="$PS1"''__git_ps1'' # bash function fi fi PS1="$PS1"'\[3[0m\]' # change color PS1="$PS1"'\n' # new line PS1="$PS1"'$ ' # prompt: always $ MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
    
por 07.11.2016 / 07:52