Python script no se ejecutará Via TextMate, bien en modo inactivo y Eclipse
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.")
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.