Проблема с Sublime Text 3 - не может получить доступ к запущенной программе

Я пытаюсь получить Sublime Text 3 (сборка 3049, если это имеет значение) для запуска скрипта Python. Простые два лайнера

var = raw_input("Enter something: ")
print "You entered ", var

который запрашивает ввод, ждет его, а затем распечатывает его в командной строке Windows.

Видя количество похожих вопросов на сайте, это проблема для довольно большого числа пользователей, поэтому я просмотрел их и попробовал... вещи. Сделал копию файла exec.py, прокомментировал, что в одной строке сделал новый файл сборки pythonw, попытался возиться с файлом сборки... похоже, ничего не работает.

В отсутствие определенного решения, как вы работаете с Python, используя Sublime Text 3?

Ответ 1

Во-первых, поскольку вы используете сборку dev, вы должны быть зарегистрированным пользователем (хорошо!), и я бы рекомендовал обновление до 3053, последняя версия, поскольку новее часто лучше с точки зрения известных проблем, которые исправляются. Во-вторых, только FYI, существует довольно полный набор (неофициальных) документов в docs.sublimetext.info. Они хорошо организованы, довольно современны и покрывают намного больше оснований, чем "официальные" на sublimetext.com. Наконец, в ответ на ваш comment, Sublime поставляется со слегка урезанной версией встроенного Python. ST2 имеет 2,6, а ST3 - 3,3, поэтому, если вы пишете плагины, вам нужно будет соответствовать этим языковым спецификациям. Вы можете запустить произвольную commands с помощью кнопки Ctrl `.

Как описано в нескольких вопросах SO, Sublime Text сам по себе не может обрабатывать ввод через raw_input() или input(). То же самое относится и к другим языкам - классу Ruby gets, Java Scanner, Node readline и т.д. Самое простое краткосрочное решение - получить Package Control, если у вас его еще нет, затем установите SublimeREPL. Он позволяет передавать или запускать часть или весь ваш код с помощью REPL (сначала вам нужно запустить его).

Если код, который вы используете, плохо работает с SublimeREPL (например, вы используете C/С++/Java/и т.д. и вам нужно скомпилировать код до его запуска) или просто хотите запустить его независимо от Sublime, вам нужно создать собственную систему сборки. Сохраните следующее как Packages/User/Python_cmd.sublime-build:

{
    "cmd": ["start", "cmd", "/k", "c:/python27/python.exe", "$file"],
    "selector": "source.python",
    "shell": true,
    "working_dir": "$file_dir"
}

изменение пути к исполняемому файлу Python, если это необходимо. Затем перейдите к Tools -> Build System и выберите Python_cmd, и когда вы нажмете Ctrl B для сборки, откроется новое окно cmd с вашим файлом. Опция /k возвращается в командную строку, не закрывая окно, после завершения вашей программы, чтобы вы могли проверить вывод, трассировку и т.д.