Pregunta

Me escribió lo siguiente para una asignación de la preparación y funciona bien en modo inactivo y Eclipse corriendo Python 3.

Sin embargo, traté de ejecutarlo desde TextMate con la nueva línea 1 - que encontré aquí - para que apunte a Python 3 en el Mac. Parece estar funcionando Python 3, pero devuelve un error. Dice: EOFError: EOF cuando se lee una línea. Se hace referencia a la línea 5 a continuación.

Alguien sabe por qué?

Por cierto, este problema TextMate no es parte de la tarea, así que no estoy tratando de obtener ayuda con los deberes. Sólo quiero encontrar la manera de usar 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.")
¿Fue útil?

Solución

El problema que está viendo no tiene nada que ver con la versión de Python. El problema es que TextMate no trata de redirigir la entrada estándar es así, cuando se está ejecutando a través de comandos de Python paquete Run Script del TextMate, el programa Python ve un fin-de-fichero inmediata. Como se explica aquí , TextMate solía ser más elegante sobre esto, pero el mecanismo que no se usa trabajos más largos en OS X 10.6 por lo que la característica está deshabilitada.

Una solución es utilizar el Mayús-Comando-R comando Run Script in Terminal del paquete Python de TextMate. Esto hace que TextMate para abrir una ventana de terminal y ejecuta el script existe y se puede entrar en la entrada allí. Lamentablemente, si bien TextMate hace respetar la línea shebang con el Comando-R Run Script command normal, no parece hacerlo con el comando Run Script in Terminal. Puede verificar que usted mismo de varias maneras. Trata de correr este fragmento de código en TextMate:

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

Para conseguir alrededor de eso, se puede establecer la variable de entorno TM_PYTHON en TextMate. Ver la respuesta aquí para más detalles sobre cómo hacerlo.

Otros consejos

Textmate está utilizando el incorporado en Python, en lugar de respetar la línea tinglado. Probablemente tendría que modificar el código de paquete a utilizar el pitón derecho.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top