Сгенерированный Pyinstaller exe-файл не запускается с планировщиком заданий Windows

avatar
Anuj
21 августа 2018 в 12:01
873
2
2

Я сгенерировал exe-файл из Pyinstaller, он отлично работает, когда я дважды щелкаю его, но когда я пытаюсь запустить его через планировщик задач, он никогда не запускается, но в истории показывает «Операция успешно завершена».

Чтобы убедиться, что он запущен, я записываю некоторый текст в файл журнала при запуске exe, чего никогда не происходит через планировщик задач.

Ниже приведен простой фрагмент моей программы на Python.

import os
import threading
import sys 
import time
from datetime import datetime
from dateutil import tz

#Auto-detect zones:
from_zone = tz.tzutc()
to_zone = tz.tzlocal()

logFilespath = 'logs' 
if not os.path.exists(logFilespath):
    os.makedirs(logFilespath)

import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# create a file handler
todayDate = datetime.now()
todayDate = datetime.strftime(todayDate, '%Y%m%d')  
handler = logging.FileHandler('logs/log' + str(todayDate) + '.log')
handler.setLevel(logging.INFO)

# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

# add the handlers to the logger
logger.addHandler(handler)

logger.info('**** Starting KPI Calculations ****')

Я использую Python2.7 и пробовал с py2exe, но с тем же результатом.

Источник

Ответы (2)

avatar
user2731076
21 апреля 2020 в 16:05
0

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

Я не понимаю, почему попытка запустить сам exe не работает. Я до сих пор не могу понять это. Поэтому вместо этого я запускаю экземпляр cmd (командной строки) и оттуда вызываю exe.

ActionDialog

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

Программа/скрипт: Укажите это на exe для командной строки. Обычно это находится в C:\Windows\System32\

.

Добавить аргументы: введите /C, а затем имя исполняемого файла (мое было в кавычках, так как имя исполняемого файла содержало пробелы, но не уверен, что это требуется). Вы можете указать полный путь, но мне это не нужно, потому что я также установил параметр «Начать с».

Начать в: Это сообщает cmd, в каком каталоге открывать. Я указал это на каталог, содержащий исполняемый файл, который я хотел запустить. Таким образом, мне не нужно было указывать полный путь в поле «Добавить аргументы».

Для примера:

Программа/скрипт: "C:\Windows\System32\cmd.exe"

Добавить аргументы: /C "myexe.exe"

Начать в: "C:\folder1\folder2\folderWithMyExe\"

Это сработало для меня и закрыло командную строку после завершения работы exe.

avatar
Vitor Alves
3 апреля 2019 в 22:27
0

Простой способ решить эту проблему:

1. Найдите исполняемый файл python в своей системе.

import sys
print("Python EXE: " + sys.executable)

В моем случае: "C:\users\USER\appdata\local\continuum\anaconda3\python.exe"

2. Выберите путь к вашему коду Python.

В моем случае: "C:\Users\USER\Documents\SandBox\test.py"

3. Откройте блокнот и напишите: «start PYTHONPATH SCRIPTPATH», например:

start C:\users\USER\appdata\local\continuum\anaconda3\python.exe C:\Users\USER\Documents\SandBox\test.py

4. Сохраните этот блокнот как .bat где-нибудь.

5. Расписание этого .bat

Система правильно запустит bat, который запустит скрипт.

user2731076
21 апреля 2020 в 15:36
0

Похоже, это не ответ на вопрос о том, как запустить exe-файл, созданный pyinstaller, а только о том, как запустить код Python. Если это необходимо для компьютера, на котором нет Python (отсюда и необходимость в exe), это не решает проблему.