Frage

Ich schrieb folgendes für eine Hausaufgabe und es funktioniert gut in IDLE und Eclipse läuft Python 3.

Allerdings habe ich versucht, es von Textmate mit der neuen Linie 1 zu laufen - was ich hier gefunden - es Python Punkt 3 auf dem Mac. Es scheint, 3 Python ausgeführt werden, aber einen Fehler zurück. Dort heißt es: EOFError: EOF, wenn eine Zeile zu lesen. Es wird Bezug auf die Linie 5 unten.

Wer weiß, warum?

BTW, dieses Textmate Problem ist nicht Teil der Hausaufgabe, so dass ich nicht bin versucht, Hausaufgaben, Hilfe zu erhalten. Ich will nur herausfinden, wie Textmate zu verwenden, um mit Python 3.

#! /usr/local/bin/python3
#
# Tests user string against two conditions.
#
user_string = input("Enter a string that is all upper case and ends with a period: ")
if user_string.isupper() and user_string.endswith("."):
    print("Your string met both conditions.")
else:
    if user_string.isupper():
        print("Your string does not end with a period.")
    elif user_string.endswith("."):
        print("Your string is not all upper.")
    else:
        print("Your string failed both conditions.")
War es hilfreich?

Lösung

Das Problem, das Sie sehen, hat nichts mit der Python-Version zu tun. Das Problem ist, dass Textmate nicht versucht, die Standardeingabe so zu umleiten, wenn Sie Bündel Run Script Befehl Python über die Textmate ist ausgeführt, sieht das Python-Programm eine sofortige End-of-Datei. Wie hier erklärt, verwendet Textmate darüber schicker zu sein, aber der Mechanismus es verwendet keine mehr funktioniert in OS X 10.6, so dass die Funktion deaktiviert wurde.

Eine Lösung ist, die Umschalt-Befehl-R Run Script in Terminal Befehl von Textmate der Python-Bundle zu verwenden. Dies bewirkt, dass Textmate ein Terminal-Fenster öffnen und das Skript dort laufen und Sie können die Eingabe dort eingeben. Leider, während die Textmate shebang Linie mit dem normalen Befehls-R Run Script command tun respektieren, scheint es nicht so mit dem Run Script in Terminal Befehl zu tun. Sie können sich auf verschiedene Weise überprüfen, ob. Versuchen Sie, diesen Code-Schnipsel in Textmate:

#! /usr/local/bin/python3
import sys
print(sys.executable)

Um das zu erhalten, können Sie die TM_PYTHON Umgebungsvariable in Textmate gesetzt. Siehe die Antwort hier , um weitere Informationen darüber, wie das zu tun.

Andere Tipps

Textmate ist mit dem eingebauten in Python, anstatt die shebang Linie zu respektieren. Sie würden vermutlich das Bündel Code haben hacken den richtigen Python zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top