Скрипт Python не будет работать через Textmate, OK в холостом ходу и Eclipse

StackOverflow https://stackoverflow.com/questions/4516358

  •  12-10-2019
  •  | 
  •  

Вопрос

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

Решение

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

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

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

Чтобы обойти это, вы можете установить TM_PYTHON Переменная среда в текстовом возрасте. Видеть Ответ здесь Для получения более подробной информации о том, как это сделать.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top