Ошибка, связанная с запуском службы python exe после nssm

#python #windows #windows-services #scheduled-tasks #nssm

#python #Windows #windows-services #запланированные задачи #nssm

Вопрос:

У меня ситуация, когда я должен запустить python.exe как услуга в NSSM. Для тестирования я создал файл .exe, в котором есть только импорт pandas как pd. Я успешно создал службу в NSSM. Но когда я запускаю службу, я получаю сообщение об ошибке windows не удалось запустить службу на локальном компьютере, служба не вернула сообщение об ошибке.

Что еще я могу сделать для решения этой проблемы?

Поверьте мне, я перепробовал все решения в stack overflow.

  1. Я закрыл cmd при запуске службы.
  2. Передал все управление сетевой службе

введите описание изображения здесь

Комментарии:

1. Pandas не является пакетом по умолчанию, поэтому вы, вероятно, установили его только под своей учетной записью пользователя, и СЕТЕВАЯ СЛУЖБА пользователя не может получить доступ к вашим пользовательским пакетам или всей установке python в appdata.

2. Как с этим справиться?

Ответ №1:

  1. Установите Python в Program Files или другую общую папку, если это еще не сделано.
  2. Если ваша служба запущена как СЕТЕВАЯ СЛУЖБА, запустите CMD с psexec в качестве СЕТЕВОЙ СЛУЖБЫ:
      psexec -i -u "nt authoritynetwork service" cmd.exe
     
  3. Установите pandas с помощью этого cmd.
  4. В cmd проверьте, можете ли вы запускать python и импортировать pandas.
  5. Поскольку службы не могут иметь windows, вам нужно как-то проверить результат вашей программы. Например, перенаправить исключение в файл:
      try:
         import pandas
         # do something
     except Exception as e:
         with open(r'c:/service_output.txt', 'wt ') as fd:
             fd.write(repr(e))