Не удается отправить входные данные запущенной программе в Sublime Text
Я пытаюсь заставить Sublime Text 3 запустить скрипт на Python. Простой двухстрочный
var = raw_input("Enter something: ")
print("You entered " + var)
который запрашивает входные данные, ожидает их, а затем выводит в командной строке консоли Windows.
Видя количество похожих вопросов на сайте, это проблема для довольно большого числа пользователей, поэтому я просмотрел их и попробовал ... прочее. Скопировал exec.py файл, прокомментировал эту одну строку, создал новый файл сборки pythonw, попытался повозиться с файлом сборки ... кажется, ничего не работает.
В отсутствие определенного решения, как вы работаете с вводом с помощью Sublime Text?
Переведено автоматически
Ответ 1
Sublime Text сам по себе не может обрабатывать входные данные через raw_input()
(Python 2) или input()
(Python 3). То же самое верно и для других языков - класса Ruby gets
, Java Scanner
, readline
класса Node, scanf
в C, cin
в C ++ и т.д. Одним из краткосрочных решений является получение Package Control, если у вас его еще нет, а затем установите SublimeREPL. Это позволяет передавать или запускать часть или весь ваш код через запущенный REPL. Может потребоваться некоторая настройка Main.sublime-menu
файлов для правильной работы вашего предпочтительного интерпретатора. В качестве альтернативы вы можете использовать отличный плагин Terminus - подробности внизу.
Если выполняемый вами код плохо работает с SublimeREPL (например, вы используете C / C ++ / Java / etc. И вам нужно скомпилировать код перед его запуском), или вы просто хотите запустить его независимо от Sublime, вам нужно создать свою собственную систему сборки. Сохраните следующее как Packages/User/Python_cmd.sublime-build
:
Windows
{
"cmd": ["start", "cmd", "/k", "c:/python38/python.exe", "$file"],
"selector": "source.python",
"shell": true,
"working_dir": "$file_dir",
"env": {"PYTHONIOENCODING": "utf-8"}
}
измените путь к вашему исполняемому файлу Python соответствующим образом. Затем перейдите к Tools -> Build System
и выберите Python_cmd
, и когда вы нажмете CtrlB для сборки, откроется новое cmd
окно с запущенным файлом. Опция /k
возвращается в командную строку, не закрывая окно, после завершения работы вашей программы, чтобы вы могли просмотреть выходные данные, обратные трассировки и т.д.
Пожалуйста, обратите внимание, что эта система сборки зависит от Windows, поскольку в macOS и Linux ее нет cmd
. Системы сборки для этих платформ приведены ниже.
macOS
Если вы используете OS X / macOS, следующая система сборки откроет вашу программу в новом экземпляре терминала. Сохраните ее как Packages/User/Python_Terminal.sublime-build
. В моем тестировании на macOS 10.15 окно терминала не всегда оказывалось вверху при активации, поэтому, если вам может понадобиться, поищите его за другими окнами.
{
"shell_cmd": "osascript -e 'tell app \"Terminal\" to do script \"cd $file_path && python3 -u $file\"'",
"working_dir": "$file_path",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"}
}
Возможно, вам потребуется указать путь к исполняемому файлу на вашем Python, если его нет в вашем $PATH
.
Linux
И, наконец, вот система сборки для Linux. Она была протестирована на Ubuntu, поэтому, если вы используете другой дистрибутив, вам нужно убедиться, что gnome-terminal
установлен. Сохраните его как Packages/User/Python_shell.sublime-build
. Как только программа завершит работу, нажмите любую клавишу, чтобы закрыть окно.
{
"shell_cmd": "gnome-terminal --working-directory=$file_path -- bash -c 'python3 -u \"$file\" && read -n 1 -s -r'",
"working_dir": "$file_path",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"}
}
Для справки, Packages
каталог открывается при выборе Preferences → Browse Packages…
:
- Linux:
~/.config/sublime-text-3/Packages
или~/.config/sublime-text/Packages
- OS X:
~/Library/Application Support/Sublime Text 3/Packages
или~/Library/Application Support/Sublime Text/Packages
- Обычная установка Windows:
C:\Users\YourUserName\AppData\Roaming\Sublime Text 3\Packages
илиC:\Users\YourUserName\AppData\Roaming\Sublime Text\Packages
- Переносная установка Windows:
InstallationFolder\Sublime Text 3\Data\Packages
InstallationFolder\Sublime Text\Data\Packages
Точный путь зависит от версии и от того, обновились ли вы с Sublime Text 3.
Я тестировал эти системы сборки только с Python, но они должны нормально работать для любого языка. При изменении просто убедитесь, что все одинарные и двойные кавычки совпадают – в противном случае вы получите ошибки или неожиданное поведение.
Обновить
Существует независимый от платформы плагин под названием Terminus, который, среди прочего, предоставляет замену движку системы сборки по умолчаниюexec
. Это позволяет вам взаимодействовать с вашей программой на панели сборки под вашим кодом. После установки из Package Control создайте следующую систему сборки (опять же, для Python).:
{
"target": "terminus_exec",
"cancel": "terminus_cancel_build",
"cmd": [
"/path/to/python", "-u", "$file"
],
"working_dir": "$file_path",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
}
Вам нужно будет настроить путь к вашему исполняемому файлу Python, как указано выше. Обязательно прочтите документацию, чтобы узнать все другие способы использования этого замечательного плагина.
Ответ 2
Чтобы дополнить ответ от Шритама Кумара Мунда, сделать привязку ключа для этого:
{ "keys": ["alt+k", "alt+k"], "command": "repl_open", "args": {"cmd": ["python", "-u", "$file_basename"], "cwd": "$file_path", "encoding": "utf8", "extend_env": {"PYTHONIOENCODING": "utf-8"}, " external_id": "python", "синтаксис": "Пакеты/Python/Питон.tmLanguage", "тип": "подпроцесс"}},
Я нашел это, используя следующее в консоли:
sublime.log_commands(True)
Ответ 3
Sublime Text не поддерживает ввод данных в программу. Для работы с входными данными вам необходимо установить пакет под названием SublimeREPL. Следуйте этому:
откройте Sublime Text >> CTRL + P
CTRL + P откроет элемент управления пакетом
- Нажмите на элемент управления пакетом: Установить пакет
- Подождите секунду, чтобы появилась строка поиска.
- Введите SublimeREPL и щелкните по нему. Он будет установлен через несколько секунд.
Затем выполните следующие действия, чтобы запустить вашу программу;
- Инструменты >> SublimeREPL >> Python >> Python запускает текущий файл
Откроется новое окно, в котором вы сможете ввести свои данные и получить результат.
Ответ 4
Вы можете использовать этот файл sublime_build, который запускается в cmd при нажатии ctrl+B .
Просто перейдите в инструмент -> sublime build-> новая система сборки и вставьте приведенное ниже как есть;
Я лично отредактировал этот файл сборки sublime на основе своего опыта, и поверьте мне, он обладает некоторыми хорошими функциональными возможностями:
- изменение цвета при завершении программы
- интерактивный вывод и ввод
- автоматическое открытие окна консоли
- сделайте паузу после завершения работы программы и дождитесь ввода
{
"cmd":["start", "cmd", "/c" ,"python $file && color b0 && pause"],
"selector": "source.python",
"working_dir": "${file_path}",
"file_regex": "(.+):(\\d+): error: ",
"shell": true
}