Скрипт Python не будет запускаться через TextMate, хорошо в IDLE и Eclipse - PullRequest
1 голос
/ 23 декабря 2010

Я написал следующее для домашнего задания, и оно отлично работает в IDLE и Eclipse с Python 3.

Однако я попытался запустить его из TextMate с новой строкой 1 - которую я нашел здесь - чтобы указать на Python 3 на Mac. Кажется, что работает Python 3, но возвращает ошибку. Он говорит: EOFError: EOF при чтении строки. Это относится к строке 5 ниже.

Кто-нибудь знает почему?

Кстати, эта проблема TextMate не является частью домашнего задания, поэтому я не пытаюсь получить помощь в выполнении домашнего задания. Я просто хочу выяснить, как использовать TextMate с 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.")

Ответы [ 2 ]

2 голосов
/ 23 декабря 2010

Проблема, которую вы видите, не имеет ничего общего с версией Python. Проблема в том, что TextMate не пытается перенаправить стандартный ввод, поэтому, когда вы работаете с помощью команды TextMate Python bundle Run Script, программа Python видит непосредственный конец файла. Как объяснено здесь , TextMate раньше был хитрее, но механизм, который он использовал, больше не работает в OS X 10.6, поэтому функция была отключена.

Одним из решений является использование Shift-Command-R Run Script in Terminal команды Python для TextMate. Это приводит к тому, что TextMate открывает окно терминала и запускает там скрипт, и вы можете ввести туда ввод. К сожалению, хотя TextMate уважает строку shebang с помощью обычной Command-R Run Script command, похоже, что с командой Run Script in Terminal это не так. Вы можете проверить это самостоятельно различными способами. Попробуйте запустить этот фрагмент кода в TextMate:

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

Чтобы обойти это, вы можете установить переменную окружения TM_PYTHON в TextMate. См. ответ здесь для более подробной информации о том, как это сделать.

0 голосов
/ 23 декабря 2010

Textmate использует встроенный Python, а не соблюдает линию Shebang.Вам, вероятно, придется взломать код комплекта, чтобы использовать правильный питон.

...