#Что произошло и когда проявляется ошибка
Скрипт Python работает вручную, но не выполняется из Планировщика заданий Windows из-за другой учётной записи, рабочего каталога, пути к интерпретатору или неявной зависимости от интерактивного входа.
#Причины и диагностические признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Запускается не тот python.exeЗадание использует PATH другой учётной записи. | В истории задания ошибка или тихое завершение, модули не найдены | Указать абсолютный путь Python нужного окружения. |
| Не задан рабочий каталогДля действия не задано поле «Рабочая папка»/Start in. | Относительные пути к CSV, конфигурации и логам не находятся | Указать папку проекта без кавычек в поле рабочего каталога. |
| Нет доступа при фоновом запускеПрава, сетевые диски и интерактивное окружение отличаются. | Работает после входа пользователя, но не без входа | Проверить учётную запись и доступные ресурсы. |
#Подробная пошаговая диагностика и исправление
- 1. Проверьте сведения о заданииНажмите Win+R, введите
taskschd.msc, нажмите Enter. В «Библиотеке планировщика заданий» выберите нужное задание. Запишите «Последний результат выполнения» и изучите вкладки «Действия» и «Условия». Если «Журнал» выключен, включайте историю только с учётом корпоративных правил и конфиденциальности.
- 2. Укажите абсолютный путь к PythonВ свойствах задания откройте «Действия» → действие «Запуск программы» → «Изменить». В поле «Программа или сценарий» укажите путь к
python.exeв.venv\Scripts, либо к установленному Python; в «Добавить аргументы» укажите полный путь к скрипту в кавычках. В «Рабочая папка» укажите папку скрипта без кавычек. - Иллюстрация заполнения полей; замените C:\Work\Project вашим реальным путёмТекстИллюстрация заполнения полей; замените C:\Work\Project вашим реальным путём.
Программа: C:\Work\Project\.venv\Scripts\python.exe Аргументы: "C:\Work\Project\job.py" Рабочая папка: C:\Work\Project
- 3. Вставьте краткую диагностику в тестовую копию скриптаДобавьте в начало копии вывод рабочего каталога и интерпретатора в отдельный журнал с уникальным именем. Лог размещайте в пользовательской папке с подтверждённым доступом. Не выводите переменные окружения целиком: они могут содержать секреты.
- Пример кода по темеPythonОбразец кода для файла .py в тестовой копии проекта; перед внедрением замените имена файлов на реальные.
from pathlib import Path import os, sys, datetime p = Path.home() / "job-diagnostic.log" with p.open("a", encoding="utf-8") as f: f.write(f"{datetime.datetime.now().isoformat()} exe={sys.executable!r} cwd={os.getcwd()!r}\n")
- 4. Проверьте учётную запись и доступВо вкладке «Общие» проверьте пользователя, от имени которого выполняется задача, и необходимость запуска без входа. Не включайте «Выполнять с наивысшими правами» без причины. Для сетевых файлов используйте доступный UNC-путь и права сервисной учётной записи, а не букву сетевого диска, привязанную к интерактивному сеансу.
- 5. Выполните тест и сравните результатНажмите «Выполнить» в библиотеке планировщика. Дождитесь завершения, откройте созданный диагностический лог и файл результата, сопоставьте время запуска и путь Python. Проверьте также автоматический запуск по расписанию на тестовом, неразрушительном задании.
#Как проверить, что проблема устранена
При ручном запуске через «Выполнить» и при расписании появляются ожидаемые выходные данные; в журнале указаны правильный Python и каталог.
#Если исправление не помогло
Если задача завершается кодом ошибки, сначала получите traceback в отдельный журнал. Не подменяйте диагностику запуском от администратора; для задач с сетевыми ресурсами уточните политику доступа у администратора.