Использование Как запустить скрипт Python как службу в Windows? Я могу запустить скрипт Python как службу. Протестировал его со следующим кодом, который я сделал:
import os
from time import sleep
from random import *
# import flask <-- This line breaks it only when run from NSSM
count = 0
while True:
num = randint(1, 10000)
count+=1
os.mkdir("C:\\temp\\" + str(count) + '_' + str(num))
sleep(2)
Я протестировал исполняемый файл и аргументы для помещения в NSSM, выполнив сначала следующее:
- компакт-диск C:\pipenvfolder\foo
- C:\Users\Имя пользователя\AppData\Local\Programs\Python\Python36\Scripts\pipenv.exe запустить python main.py
И он успешно запускает скрипт, даже если у него есть импорт в пакеты, установленные в pipenv (например, flask). Затем я создал службу NSSM с помощью:
- nssm.exe install ServiceName "C:\Users\Username\AppData\Local\Programs\Python\Python36\Scripts\pipenv.exe" "запустить python main.py"
- nssm set ServiceName AppDirectory "C:\pipenvfolder\foo"
И каждые 2 секунды он создает каталог в c:\temp. Все хорошо. Однако теперь я хочу импортировать один из установленных пакетов Pipenv, то есть пакет flask, установленный в файле pipenv. Поэтому я добавил «импортную флягу» в тестовый скрипт выше.
Затем я настроил NSSM на журнал ошибок и проверил, почему он не запускается и не может импортировать модуль flask:
Traceback (most recent call last):
File "main.py", line 7, in <module>
import flask
ModuleNotFoundError: No module named 'flask'
Служба nssm должна запускаться в правильном каталоге приложения, иначе она не найдет main.py
. Вызов из правильного каталога указывает, что pipenv. Следовательно, я не могу понять, почему pipenv не используется для запуска скрипта так же, как при запуске через командную строку.