Службы Windows с Python и py2exe - PullRequest
       24

Службы Windows с Python и py2exe

0 голосов
/ 17 апреля 2011

Мне нужна помощь с преобразованием службы Windows Python с использованием py2exe.

Позвольте мне объяснить проблему.У меня есть служба Python, которая работает, здесь нет проблем.Я использовал py2exe, чтобы превратить его в исполняемый файл.Я протестировал его, заменив версию службы на python на эту, и она тоже работает без проблем.

Но когда я перемещаю exe-версию службы на другой компьютер, она регистрируется в диспетчере служб, но не запускается с ошибкой: «Система не может найти указанный файл».Отсутствующий файл - это один из написанных мной модулей.

Я немного поиграл с этим и вернулся к машине, где использовал py2exe и где работает exe-версия сервиса.Я удалил все, что связано с python, все, что создал py2exe, кроме папки "dist", все, что я мог придумать, было связано с версией Python сервиса.Версия exe все еще работала (хотя я удалил, среди прочего, те самые файлы, которые якобы отсутствовали на другой машине).

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

PS: у меня на целевом компьютере установлена ​​среда выполнения c ++.Вы не можете зарегистрировать сервис без него, и, как я уже сказал, я могу зарегистрировать его, он просто не запустится.

Ответы [ 2 ]

1 голос
/ 20 февраля 2014

Даже если вы преобразовали сценарий .py в исполняемый файл, служба все равно использует интерпретатор python для запуска самого кода службы.если вы откроете «Службы» и посмотрите на свойства службы, вы должны увидеть что-то вроде - Путь к исполняемому файлу: «C: \ Python27 \ lib \ site-packages \ win32 \ PythonService.exe»

Я предполагаюна другом компьютере не установлен python.если вы хотите иметь возможность запускать эту службу на машине без установки python, вам нужно сделать что-то вроде This , или вы также можете сделать это, используя cx_freeze

0 голосов
/ 18 ноября 2011

http://www.py2exe.org/index.cgi/py2exeAndWindowsServices

Там есть некоторые заметки о модулях, конфликтующих с системными библиотеками Windows. У него была проблема, потому что у него был модуль с именем version, а import version вызвал ошибку приложения.

Вы можете попробовать импортировать win32traceutil как первую вещь в вашем сервисе. Это должно позволить вам запустить консольное приложение win32traceutil для отображения любого вывода stdout / stderr из службы.

...