Код Python не обращается к файлам проекта в режиме службы?
У меня есть бот, написанный на Python. Проект состоит из основного файла(bot.py) и двух других (chek_ldap.py и bubl.py), к которым он обращается во время работы (вызывает функции и кнопки бота).
Я создал службу на Windows Server, которая запускает основной файл bot.py,
Проблема заключается в том, что во время работы основного кода обращение к chek_ldap.py и bubl.py происходит нормально. Я могу получить все функции, бот реагирует на кнопки и т.д. Но во время работы бота в качестве службы, работает только тот код, который расположен в bot.py и такое ощущение, что он не обращается к chek_ldap.py и bubl.py для передачи функции в них и получения информации обратно.
Повторюсь, при обычном запуске bot.py код работает отлично.
Службы в винде запускаются от имени другого пользователя, в другом рабочем каталоге, а так же с другими ограничениями для безопасности. Скорее всего одно из двух: либо неверные пути к файлам либо нет прав на файлы. Проверьте настройки запуска вашей службы - каким именно образом она запускается, где и от кого именно.
Я настроил запуск службы от своей УЗ, под которой авторизуюсь. Она имеет права локального администратора.
Исполняемые файлы также находятся в директории моей УЗ.
У вас есть какая-нибудь информация как работают пути из служб?
Ваше предположение кажется верным, так как при запуске кода в режиме службы он перестает писать логи в файл и не может работать с текстом, который я беру из других файлов.
Выяснил что файл chek_ldap.py всё же используется основным файлом проекта bot.py.
ImagoRay, в этом случае у вас, скорее всего, зависимость ваших путей от текущего/рабочего каталога приложения. Используйте либо абсолютные пути либо пути относительно вашего исполняемого файла, а не текущий каталог.
У вас есть какая-нибудь информация как работают пути из служб?
Точно так же как и для обычных приложений - есть рабочий каталог, он может быть любым, не обязательно тот, в котором находится исполняемый файл. Соответственно, при попытке доступа к файлу по относительному пути ОС будет учитывать текущий каталог приложения.
VoidVolker, большое спасибо! Я проверил и действительно у меня в коде Pycharm понимает пути до файлов просто потому что они находятся в директории проекта. "log.log" для Pycharm понятное значение пока оно "рядом". Переделаю код на абсолютные пути и отпишусь в тему.
ImagoRay, pycharm тут не причём. Это относительный путь: log.log -> ./log.log и соответственно системное API ищет этот файл в текущем рабочем каталоге приложения.