Код ошибки Python 9009: причины и исправления

Раздел: Ошибки -> Ошибки Python

Что означает код ошибки Python 9009

Код 9009 в Windows сигнализирует о том, что система не может найти исполняемый файл, указанный в команде. В контексте Python это чаще всего случается, когда интерпретатор не добавлен в переменную среды PATH или команда написана с опечаткой. Ошибка проявляется как exit code 9009 в выводе консоли, планировщика задач или при запуске скрипта из другого приложения.

Основное решение: добавление Python в PATH

Наиболее эффективный способ избавиться от ошибки 9009 - убедиться, что путь к папке с python.exe (например, C:\Python39 или C:\Users\имя\AppData\Local\Programs\Python\Python39) присутствует в системной переменной PATH. Если Python установлен, переустановите его с включённой опцией Add Python to PATH. Если переустановка невозможна, добавьте путь вручную.

Типичная проблема: после добавления пути в системные переменные изменения вступают в силу только после перезапуска командной строки. Если ошибка остаётся, проверьте порядок путей - иногда путь к Python стоит после другого неправильного пути.

:: Проверка текущего значения PATH
reg query "HKCU\Environment" /v PATH
:: Добавление пути через командную строку (с правами администратора)
setx PATH "%PATH%;C:\Python39" /M

Python attributeerror object has no attribute (ошибка attributeerror в python)

Успешно: указанное значение сохранено.

Non utf 8 code starting with python (ошибка кодировки utf-8 в python)

Как временно обойти ошибку, не меняя PATH?

Если изменить системную переменную невозможно или требуется быстрый запуск, используйте полный путь к интерпретатору.

C:\Python39\python.exe C:\myscript.py

Python exit code 9009 (ошибка python с кодом 9009)

Как запустить скрипт из папки с Python без добавления в PATH?

Перейдите в папку, где установлен Python, и выполните команду:

cd C:\Python39
python.exe C:\scripts\main.py

Проблема: если версия Python отличается, путь может быть другим (Python310, Python311). Убедитесь, что путь указан верно.

Как использовать Python Launcher (py) для решения ошибки 9009?

Python Launcher (py.exe) автоматически находит установленный Python, даже если не прописан в PATH. Запустите скрипт командой:

py C:\myscript.py
py -3 script.py   # явно указать версию 3

Когда launcher не помогает?

Если установлено несколько версий Python, launcher может не сработать, если не указана конкретная версия. Используйте py -3.9.

Ошибка 9009 может появляться, если сам py.exe не найден. Проверьте его наличие в C:\Windows или в папке Python.

Как исправить ошибку при запуске через планировщик задач Windows?

В планировщике задач часто указывают просто python script.py, но если Python не в PATH, получите код 9009. Решение - указать полный путь к python.exe в действии задачи.

Программа: C:\Python39\python.exe
Аргументы: C:\Scripts\automation.py

Как решить проблему при вызове Python из другого приложения (C#, Node.js)?

При запуске дочернего процесса необходимо передавать полный путь к интерпретатору или использовать shell: true в Node.js / UseShellExecute = true в C#.

// C#
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = @"C:\Python39\python.exe";
start.Arguments = @"C:\scripts\process.py";
Process.Start(start);
# Node.js
const { spawn } = require('child_process');
const child = spawn('C:\\Python39\\python.exe', ['script.py']);

Как проверить, что Python установлен и работает, если возникает код 9009?

Выполните в командной строке простую команду:

python --version

Если получаете 'python' не является внутренней или внешней командой, это прямое подтверждение проблемы PATH. Альтернатива: py --version.

Иногда файл python.exe повреждён или удалён. Проверьте установку через панель управления или запустите where python.

Что делать, если ошибка возникает внутри виртуального окружения?

Виртуальное окружение использует собственный интерпретатор. Активируйте его перед запуском:

.\venv\Scripts\activate   # Windows
python script.py

Если окружение не активировано, может запуститься системный Python, которого нет в PATH. Явно укажите путь к venv:

.\venv\Scripts\python.exe script.py

Расширенные примеры и нестандартные сценарии

Запуск Python скрипта из пакетного файла (.bat) с проверкой ошибок

Внутри bat-файла можно предусмотреть альтернативные пути к Python для избежания кода 9009:

Пример
@echo off
:: Попытка запустить через py
py -3 script.py
if %errorlevel% equ 9009 (
    echo Ошибка 9009: Python не найден через py
    :: Альтернативный полный путь
    C:\Python39\python.exe script.py
)
if %errorlevel% neq 0 (
    echo Не удалось выполнить скрипт, код %errorlevel%
    exit /b %errorlevel%
)

Интеграция Python с PowerShell - явное указание интерпретатора

PowerShell может запускать Python как команду. Для избежания 9009 используйте вызов с полным путём:

Пример
& 'C:\Python310\python.exe' 'C:\work\analysis.py'
# или через Start-Process
Start-Process -FilePath "C:\Python310\python.exe" -ArgumentList "analysis.py" -Wait

Автоматическое определение пути к Python через реестр (скрипт на Python)

Если нужно программно определить путь к интерпретатору внутри другого скрипта:

Пример
import winreg, os

def find_python():
    try:
        key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Python\PythonCore\3.10\InstallPath")
        value, _ = winreg.QueryValueEx(key, "")
        return os.path.join(value, "python.exe")
    except FileNotFoundError:
        return None

python_path = find_python()
if python_path:
    print(python_path)   # Выведет, например, C:\Python310\python.exe
else:
    print("Python не найден в реестре")
C:\Python310\python.exe

Использование Docker контейнера с Python - ошибка 9009 при запуске

Внутри контейнера Linux код 9009 не встречается, но при попытке запустить Windows-контейнер с Python может возникнуть. Убедитесь, что образ содержит python в PATH:

Пример
FROM python:3.10-windowsservercore
CMD ["python", "app.py"]
# Если при сборке или запуске выходит код 9009 - проверьте, что python.exe находится в PATH

Запуск Python из C# с перенаправлением вывода и обработкой кода 9009

Пример
using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        ProcessStartInfo psi = new ProcessStartInfo
        {
            FileName = "C:\\Python39\\python.exe",
            Arguments = "script_with_error.py",
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false
        };
        using (Process p = Process.Start(psi))
        {
            p.WaitForExit();
            if (p.ExitCode == 9009)
            {
                string error = p.StandardError.ReadToEnd();
                Console.WriteLine($"Код 9009: {error}");
            }
        }
    }
}
Код 9009: 'python' не является внутренней или внешней командой

Использование модуля subprocess с проверкой кода возврата (Python)

Пример
import subprocess
import sys

try:
    result = subprocess.run(
        [r"C:\Python39\python.exe", "nonexistent.py"],
        check=True,
        capture_output=True
    )
except subprocess.CalledProcessError as e:
    if e.returncode == 9009:
        print("Ошибка 9009: проблема с исполняемым файлом Python")
    else:
        print(f"Другая ошибка: {e.returncode}")
Ошибка 9009: проблема с исполняемым файлом Python

Ошибка Python с кодом 9009 - comments

En
Python exit code 9009 (python)