Domanda

ho scritto quanto segue per un compito a casa e funziona benissimo in IDLE e Eclipse in esecuzione Python 3.

Tuttavia, ho provato a lanciarlo da TextMate con la nuova linea 1 - che ho trovato qui - per puntare a Python 3 su Mac. Sembra di essere in esecuzione Python 3, ma restituisce un errore. Dice: EOFError: EOF durante la lettura di una linea. E 'riferendosi alla linea 5 di seguito.

Qualcuno sa perché?

A proposito, questo problema TextMate non è parte del compito a casa, quindi non sto cercando di ottenere dei compiti a casa. Voglio solo capire come utilizzare TextMate con 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.")
È stato utile?

Soluzione

Il problema che state vedendo non ha nulla a che fare con la versione di Python. Il problema è che TextMate non cerca di standard input così, quando si esegue tramite comando bundle Run Script Python del TextMate, il programma Python vede un immediato end-of-file. Come spiegato qui , TextMate usato essere più elaborato di questo, ma il meccanismo è utilizzato alcun lavori più lunghi in OS X 10.6 in modo che la funzione è stata disabilitata.

Una soluzione è quella di utilizzare il Maiusc-Comando-R Comando Run Script in Terminal del fascio Python di TextMate. Questo fa sì che TextMate per aprire una finestra di terminale ed eseguire lo script lì ed è possibile immettere l'ingresso lì. Purtroppo, mentre TextMate fa rispettare la shebang con il normale Comando-R Run Script command, non sembra di farlo con il comando Run Script in Terminal. È possibile verificare che se stessi in vari modi. Provare a eseguire questo frammento di codice in TextMate:

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

Per aggirare questo, è possibile impostare la variabile d'ambiente TM_PYTHON in TextMate. Vedere la risposta qui per maggiori dettagli su come farlo.

Altri suggerimenti

TextMate sta usando il built-in Python, piuttosto che rispettando la linea di shebang. si sarebbe probabilmente necessario modificare il codice fascio di utilizzare il pitone destra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top