Запуск Python-программ через консоль Windows

Раздел: Администрирование -> работа с командной строкой

Запуск скриптов Python в Windows: основные подходы

Наиболее универсальный способ запуска Python-скрипта в Windows - использование установщика Python (python.exe) или оболочки py.exe (Python Launcher). Последний рекомендуется Microsoft, так как он автоматически определяет версию Python по shebang-строке (например, #!python3) и позволяет избежать путаницы при наличии нескольких версий.

py myscript.py

Python script windows (запуск скрипта python в windows)

Команда py без аргументов запускает скрипт, используя интерпретатор по умолчанию (первый найденный в реестре). Если нужна конкретная версия, можно указать флаг -3.9 или -3.10.

Если Python Launcher не установлен, используется прямой вызов python:

python myscript.py

Python интерпретатор команды (команды интерпретатора python)

Для корректной работы команды python необходимо, чтобы переменная среды PATH содержала путь к папке, где расположен python.exe (обычно C:\Python310\ или C:\Users\Имя\AppData\Local\Programs\Python\Python310\) . При установке Python с официального сайта есть опция Add Python to PATH, которую следует включить.

Ошибка: «python не является внутренней или внешней командой»

Эта ошибка возникает, если интерпретатор не найден в PATH. Решение: переустановить Python, отметив опцию добавления в PATH, или вручную прописать путь в системные переменные. Альтернативно использовать полный путь к python.exe:

C:\Python310\python.exe myscript.py

Также можно воспользоваться py, который часто не требует настройки PATH, так как его установочная папка (например, C:\Windows) обычно уже в PATH.

Проблема: скрипт завершается мгновенно, окно консоли закрывается

При двойном клике по .py-файлу окно консоли может закрываться сразу после выполнения. Для интерактивного запуска через командную строку этого не происходит - вывод остаётся на экране. Если требуется удержать окно, можно добавить в конец скрипта вызов input() или запустить через cmd с ключом /k.

Как запустить скрипт с явным указанием версии Python?

Использование py -3.9 или python3.9 (если установлены соответствующие алиасы). Пример:

py -3.10 myscript.py

Это особенно полезно в средах, где одновременно установлены Python 2 и 3, хотя Python 2 уже не поддерживается.

Ошибка: версия не найдена - рекомендуется проверить корректность номера версии, например, py --list покажет доступные.

Как выполнить скрипт с передачей аргументов командной строки?

Аргументы следуют после имени файла:

python myscript.py --input data.txt --output result.txt

Внутри скрипта они доступны через sys.argv или библиотеку argparse.

Проблема: пробелы внутри аргументов - необходимо заключать в кавычки: python myscript.py "C:\My Folder\file.txt". Иначе Python получит несколько отдельных аргументов.

Как перенаправить вывод скрипта в файл?

Стандартный вывод можно перенаправить с помощью символа >:

python myscript.py > output.log

Аналогично для ошибок: 2> errors.log. Объединённый вывод: > all.log 2>&1.

Ошибка: перенаправление не работает в некоторых оболочках (PowerShell использует другой синтаксис, например | Out-File). Для cmd подходит описанный синтаксис.

Как запустить скрипт без отображения консольного окна (скрытый режим)?

Использовать интерпретатор pythonw.exe вместо python.exe:

pythonw myscript.py

Этот вариант подходит для фоновых служб, GUI-приложений (например, Tkinter) или обработчиков событий. Вывод в консоль при этом не отображается.

Предупреждение: если скрипт пишет в stdout/stderr, эти данные будут потеряны. Для отладки лучше сначала протестировать скрипт с обычным python.exe.

Ошибка: скрипт не запускается - следует проверить, установлен ли pythonw.exe (он поставляется вместе со стандартной установкой Python).

Как настроить ассоциацию .py файлов для запуска через двойной щелчок?

При установке Python обычно создаётся ассоциация, позволяющая запускать .py двойным кликом. Если это не работает, можно восстановить ассоциацию через свойства файла или командой:

ftype Python.File="C:\Python310\python.exe" "%1" %*
assoc .py=Python.File

Теперь двойной клик будет запускать скрипт с аргументами. Однако окно консоли может закрываться - для удержания можно использовать pythonw (если не нужен вывод) или добавить в конец скрипта вызов input().

Проблема: ассоциация с текстовым редактором (например, Notepad++) может переопределять поведение. Можно удалить или изменить ассоциацию через панель управления.

Как запустить скрипт из PowerShell с передачей аргументов?

PowerShell поддерживает вызов Python аналогично cmd, но есть нюансы с пробелами и кавычками:

python myscript.py '--param "value with spaces"'

Лучше использовать синтаксис с --% (stop-parsing) для передачи точных аргументов:

python --% myscript.py --param "value with spaces"

Ошибка: кавычки неправильно экранируются - для экранирования в PS можно использовать "`" (backtick) или рекомендуется переключиться на cmd.

Как добавить скрипт в автозагрузку (запуск при старте системы)?

Создать ярлык в папке shell:startup или добавить задачу через планировщик. Для планировщика:

schtasks /create /tn "MyScript" /tr "pythonw C:\path\myscript.py" /sc daily /st 09:00

Это задание будет запускать скрипт ежедневно в 9:00. Для задания при входе используется /sc onlogon.

Проблема: скрипт не запускается планировщиком - нужно проверить права пользователя, путь к pythonw, рабочую папку (рекомендуется указать /ru SYSTEM для запуска от системы).

Расширенные примеры запуска Python-скриптов в Windows

Пример 1. Обработка аргументов командной строки с помощью argparse

Скрипт принимает входной и выходной файлы, а также опциональный флаг verbose.

Пример

# script_args.py
import argparse
import sys

parser = argparse.ArgumentParser(description='Обработка данных')
parser.add_argument('--input', required=True, help='Входной файл')
parser.add_argument('--output', required=True, help='Выходной файл')
parser.add_argument('--verbose', action='store_true', help='Подробный вывод')
args = parser.parse_args()

if args.verbose:
    print('Обработка файла', args.input)
# имитация обработки
print('Результат сохранён в', args.output)

Запуск:

Пример
python script_args.py --input data.txt --output result.txt --verbose
Обработка файла data.txt
Результат сохранён в result.txt

Ошибка: отсутствует обязательный аргумент - argparse выведет сообщение об ошибке и завершит скрипт.

Пример 2. Запуск скрипта через subprocess с захватом вывода

Управляющий скрипт на Python вызывает другой скрипт и анализирует его вывод.

Пример

# manager.py
import subprocess
import sys

script_path = 'C:\\Scripts\\worker.py'
try:
    result = subprocess.run(
        [sys.executable, script_path, '--task', 'backup'],
        capture_output=True,
        text=True,
        check=True,
        encoding='utf-8'
    )
    print('STDOUT:', result.stdout)
    print('STDERR:', result.stderr)
except subprocess.CalledProcessError as e:
    print('Ошибка:', e.returncode, e.stderr)

Запуск:

Пример
python manager.py

Если worker.py успешно выполняется:

STDOUT: Выполнено резервное копирование.
STDERR:

Проблема: deadlock при интерактивном вводе - следует использовать stdin=subprocess.PIPE или timeout.

Пример 3. Запуск скрипта в виртуальном окружении

Активация venv и запуск скрипта с использованием интерпретатора из окружения.

Пример

# Создание окружения:
python -m venv myenv
# Активация (cmd):
myenv\Scripts\activate
# Установка зависимостей:
pip install requests
# Запуск скрипта (интерпретатор из виртуального окружения):
python myscript.py
# Деактивация:
deactivate

Либо прямой вызов интерпретатора из папки окружения, без активации:

Пример
myenv\Scripts\python.exe myscript.py

Результат: скрипт использует изолированные библиотеки окружения.

Ошибка: модули не найдены - необходимо убедиться, что окружение активировано или указан правильный путь к python.exe внутри venv.

Пример 4. Перенаправление вывода с принудительной кодировкой UTF-8

По умолчанию в Windows консоль может использовать кодировку cp866. Для скриптов, выводящих Unicode, требуется явно задать кодировку.

Пример

# unicode_script.py
print('Привет, мир!')
print('Unicode символ: \u263A')

Запуск с установкой переменной:

Пример
set PYTHONIOENCODING=utf-8 & python unicode_script.py
Привет, мир!
Unicode символ: ☺

Если этого не сделать, может возникнуть ошибка UnicodeEncodeError.

Проблема: в PowerShell переменная устанавливается иначе - $env:PYTHONIOENCODING="utf-8".

Пример 5. Запуск скрипта в фоновом режиме (без удержания консоли)

Команда START /B запускает процесс в том же окне, но не дожидается его завершения. Для полного отделения используется START "" /B pythonw script.py.

Пример

START "" /B pythonw background_script.py

Процесс будет работать в фоне, консоль cmd можно закрыть. Проверить запущенные процессы можно через Task Manager или командой tasklist | findstr python.

(нет вывода, процесс запущен)

Предупреждение: скрипт может не получить права на запись в текущую директорию, если консоль закрыта. Рекомендуется указать полные пути и рабочую папку.

Пример 6. Запуск скрипта через планировщик задач (Task Scheduler) с записью лога

Создание задачи с помощью schtasks, которая запускает pythonw каждую минуту и сохраняет лог.

Пример

schtasks /create /tn "LogRotation" /tr "cmd /c pythonw C:\Scripts\log_rotate.py >> C:\Logs\rotate.log 2>&1" /sc minute /mo 1 /f
УСПЕХ: Запланированная задача "LogRotation" успешно создана.

Планировщик будет запускать cmd.exe, который вызовет pythonw и перенаправит вывод в файл. Следует использовать /f для перезаписи существующей задачи.

Проблема: задача не выполняется - следует проверить, что путь к pythonw указан корректно, а сама задача включена. Можно использовать schtasks /query для проверки.

запуск скрипта Python в Windows - comments

En
Python script windows (python)