Kann Python nicht im interaktiven Modus auf dem neuen msys-git-Terminal verwendet werden?

4113
Darthfett

Ich habe kürzlich meinen Laptop mit einem 32-Bit-Win7-Upgrade aufgerüstet, und auf meinem neuen Laptop wird eine 64-Bit-Win7-Installation ausgeführt.

Ich installiere git 2.5.1 von git-scm.com und die neuesten Python-Versionen (beide 3.4.3 und 2.7.10).

Während der Installation wähle ich das neue (Standard-) Terminal aus, das zuvor nicht mit der Installation geliefert wurde, und schalte das Terminal ein, nachdem die Installation abgeschlossen ist. Bei der pythonEingabe sehe ich jedoch keine Ausgabe (der Cursor springt in die nächste Zeile, wenn ich die Eingabetaste drücke).

Ich habe versucht, in Python-Befehlen wie einzugeben print('hello world'), und die einzige Ausgabe, die ich erhalten kann, ist ein Syntaxfehler, wenn ich so etwas eingebe a.4. Es scheint, dass Python läuft, aber ich bekomme keine Ausgabe. Dies geschieht für beide Versionen von Python, die ich ausführte.

Python scheint normalerweise mit dem alternativen Windows-Cmd-basierten Git zu laufen, aber mein normaler Konsolenwrapper, Console2, scheint nicht korrekt zu funktionieren, daher kann ich ihn nicht leicht kopieren / einfügen.

Irgendeine Idee, warum die msys-Konsole nicht funktioniert oder wie ich das beheben kann?

4

2 Antworten auf die Frage

6
Darthfett

Vom Installationsassistenten:

"Windows-Konsolenprogramme (wie interaktives Python) müssen über <code> winpty </ code> gestartet werden, um in MinTTY` zu funktionieren

Wenn Sie das mit MSys2 / Git gelieferte MinTTY-Terminal verwenden möchten, müssen Sie Konsolenprogramme wie Python mit winpty starten.

Ab Git für Windows 2.7.1 ist Winpty bereits im Lieferumfang enthalten und kann wie folgt ausgeführt werden:

winpty /path/to/python.exe 

Winpty ist installiert bei Git\usr\bin

Alternativ können Sie immer bash-Aliasing verwenden, um eine Funktion in Ihre .bashrc zu schreiben, die möglicherweise das tut, was Sie möchten. Hier ist meine Lösung, um diese neue Einschränkung zu umgehen:

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

Beachten Sie, dass es einige Probleme gibt, wenn Sie die Pfeiltasten verwenden, um den Befehlsverlauf im interaktiven Python-Modus abzurufen.

4
Brad Sturtevant

Git nutzt Msys, und jetzt gibt es eine bessere, Msys2 !

Die Verwendung und die Änderungen, die Git-SCM an Msys vorgenommen hat .profile, .bashrcscheint mir der Weg zu sein.

Sie können Msys2 jetzt problemlos mit Pacman aktualisieren

pacman -Syuu pacman -S winpty 

Git hat einen schönen Alias ​​für winpty hinzugefügt:

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 

Um Git-Zweig in Prompt anzeigen zu lassen, kopieren Sie die Datei, in die Git-Leute ihren Prompt eingeben, und quittiert sie in your .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 
Sie schlagen vor, Msys2 vor oder nach der Installation von Msys-git zu installieren? Kannst du auch klarstellen, was das bedeutet ?: `Damit Git-Zweig in Eingabeaufforderung angezeigt wird, kopiere die Datei, in die Git-Leute ihre Eingabeaufforderung eingeben, und gib sie in deine .bashrc (.git-prompt.sh)` ein Darthfett vor 7 Jahren 0
@ cascer1 [Antwort 1 von 2] Ich habe sowohl [Git for Win] (https://git-scm.com/download/win) als auch [Msys2] (https://sourceforge.net/p/msys2/wiki) / MSYS2% 20installation /) installiert. In Msys2 können Sie Git manuell installieren: `pacman -S git git-flow`. Die Aufforderung, die ich mag, ist `User @ BHost MINGW64 ~ / Entwickeln / src / mein-Git-Klon (Entwickeln)`. Der `(Entwickeln)` Teil wird hinzugefügt. Wenn Sie ein Verzeichnis mit einem .git-Unterverzeichnis (Git-Projekt) eingeben, wird der aktuelle Git-Zweig (Entwicklung) angezeigt. Die Leute bei Git haben die Eingabeaufforderung in Msys verbessert, indem sie die Datei `GitInstallDir \ etc \ profile.d \ git-prompt.sh` erstellt haben. Brad Sturtevant vor 7 Jahren 0
@ cascer1 [Antwort 2 von 2] Sie können Gitts Aufforderung (zu Msys2) hinzufügen, indem Sie in Ihrem ~ / .bashrc auf git-prompt.sh verweisen oder die Datei / ~ umbenennen in ~ / .bash_prompt kopieren und dann in ~ / .bashrc hinzufügen `. "$ /. Bash_prompt.sh" `. Kann auch nur Alias ​​und Prompt wie oben verschoben kopieren. Git for Win kommt mit winpty, aber Msys2 nicht, `pacman -S winpty '. Habe Msys2 nicht ohne Git für Windows getestet, aber Msys2 funktioniert gut mit GitHub. Ich behandele Git-für-Win-Startdateien (.bashrc usw.) als Beispiele für das Einrichten meiner eigenen. Brad Sturtevant vor 7 Jahren 0
@BradSturtevant Ähh, ich bin nicht sicher, wie ich darauf antworten soll. Alles, was ich getan habe, war, Ihren Post zu editieren, um ihn etwas lesbarer zu machen;). Sie können sehen, was ich geändert habe [hier] (http://superuser.com/posts/1143163/revisions) cascer1 vor 7 Jahren 0
@ cascar1 Es war dein Kommentar zu edit über einen unintelagle Satz, den ich zu erklären versuchte. Wenn ich nur ein Privileg für die Bearbeitung hätte :-) Brad Sturtevant vor 7 Jahren 0