Question

J'ai écrit ce qui suit pour un devoir et il fonctionne très bien dans IDLE et Eclipse en cours d'exécution Python 3.

Cependant, j'ai essayé de le lancer depuis TextMate avec la nouvelle ligne 1 - que je trouvais ici - pour pointer vers Python 3 sur le Mac. Il semble être en cours d'exécution Python 3, mais renvoie une erreur. Il dit: EOFError: EOF lors de la lecture d'une ligne. Il fait référence à la ligne 5 ci-dessous.

Quelqu'un sait pourquoi?

BTW, cette question de TextMate ne fait pas partie de la mission de devoirs, donc je ne cherche pas à obtenir de l'aide aux devoirs. Je veux juste savoir comment utiliser TextMate avec 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.")
Était-ce utile?

La solution

Le problème que vous voyez n'a rien à voir avec la version Python. Le problème est que TextMate ne cherche pas à rediriger l'entrée standard, quand vous utilisez Python via le faisceau de commande Run Script du TextMate, le programme Python voit une fin de fichier immédiat. Comme expliqué ici , TextMate l'habitude d'être colombophile à ce sujet mais le mécanisme utilisé, il ne fonctionne plus dans OS X 10.6 si la fonction a été désactivée.

Une solution consiste à utiliser le Commande-Maj-R commande Run Script in Terminal du paquet Python de TextMate. Cela provoque TextMate pour ouvrir une fenêtre de terminal et exécutez le script et il vous pouvez entrer l'entrée là. Malheureusement, alors que TextMate ne respecte la ligne de tralala avec la normale Commande-R Run Script command, il ne semble pas le faire avec la commande Run Script in Terminal. Vous pouvez vérifier que vous de diverses façons. Essayez d'exécuter cet extrait de code dans TextMate:

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

Pour contourner cela, vous pouvez définir la variable d'environnement TM_PYTHON dans TextMate. Voir la réponse pour plus de détails sur la façon de le faire.

Autres conseils

TextMate utilise Python intégré, plutôt que de respecter la ligne de tralala. Vous auriez sans doute de pirater le code paquet pour utiliser le python droit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top