Практическое правило для систем сборки в Sublime Text: если вы можете создать командную строку, которая при выполнении вручную в терминале / консоли даст вам нужный эффект (и эта команда не требует интерактивноговвод), затем вы можете превратить его в систему сборки.
В этом случае вы хотите создать новое окно cmd
и сделать что-то внутри него;Таким образом, тот факт, что вы используете Sublime, не интересен в общей схеме знания того, как это сделать, и, возможно, поэтому ваш поиск не дал результатов.
В Windows вы можете использоватьТерминальная команда типа cmd /s /c something
сообщает Windows cmd.exe
, что она должна выполнить команду something
. В вашем случае вы хотите использовать Python для выполнения программы, так что это может выглядеть примерно так, чтобы Python выполнял my_file.py
.
cmd /s /c python my_file.py
Однако, если вы делаете это в существующей командной строке,результат - просто запустить программу в текущем окне;то есть вы говорите cmd
выполнить команду, но она все еще выполняется в текущем окне, что не то, что вам нужно.
Чтобы запустить программу в новом окне, вам необходимо использоватькоманда start
, которая запускает новую программу. Общий формат этого будет выглядеть примерно так:
start "" cmd /s /c python my_file.py
Это говорит start
о запуске нового экземпляра cmd
, о котором вы говорите, чтобы запустить программу, так что теперь программа Pythonработает в своем собственном окне.
Есть некоторые общие проблемы с этим;самая большая из них заключается в том, что как только cmd
заканчивает выполнение команды, которую вы ей даете, она завершается. Аналогично, Python также завершает работу после завершения программы. В результате, как только ваша программа будет завершена, окно немедленно исчезнет, прежде чем вы сможете увидеть, что она сделала.
Вы можете добавить -i
к команде python
, чтобы она стала интерактивной. , но тогда вам нужно будет взаимодействовать с внутренним Python python, чтобы заставить его выйти и закрыть окно, что, как вам кажется, не нужно делать шаг.
В этом случае вам нужно изменить команду, которую вы даете cmd
, чтобы она также ждала, пока вы не нажмете клавишу.
В общем, пример этого может выглядеть примерно так:1034 * file:
{
"shell_cmd": "start \"\" cmd /s /c \"python -u \"$file\" & pause\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"},
}
Это внутренняя версия Python.sublime-build
, модифицированная для расширения команды, как описано выше. Чтобы это работало, вам нужно иметь возможность ввести python
на терминале и запустить его интерпретатор Python. Если это не так, вам нужно соответствующим образом изменить переменную окружения PATH
.
Если вы используете Python 3, вам может потребоваться заменить python
на python3
или аналогичный в команде, чтобычто cmd
знает, что выполнить.