Сценарий Python 3 в качестве службы Windows - PullRequest
0 голосов
/ 09 ноября 2018

У меня проблема с запуском моего скрипта как службы.

Я не понимаю, что делать с путями.

Что у меня есть:

      main.py (main code)   service.py (template to install and run main.py
         /      |        \  
subdir/         subdir/   config.ini
script1.py      script2.py

Что в main.py: 1. Я читаю config.ini и получаю переменные с путями, т. Е .:

[XLS]
dir = D:\\ExcelToSQL
workbook1 = workbook1.xls
workbook2 = workbook2.xls
workbook3 = workbook3.xls

[SQL]
user = root
password = password
host = localhost
database = database
port = 3306
ssl_ca = 
ssl_verify_cert = 
ssl_key = 
ssl_cert =
encoding =
  1. script1 для изменения значений в книгах XLS просто функционирует с аргументами и параметрами script2 для импорта в MySQL DB, опять же просто функции. Все переменные взяты из config.ini

Основная проблема при отладке моего сервиса. Он не может читать config.ini:

Error 0xC0000003 - The instance's SvcRun() method failed

Traceback (most recent call last):
  File "C:\Python\lib\site-packages\win32\lib\win32serviceutil.py", line 839, in SvcRun
    self.SvcDoRun()
  File "D:\rs_al\IdeaProjects\ExcelToSQL\PyXLSQL\service.py", line 31, in SvcDoRun
    self.main()
  File "D:\rs_al\IdeaProjects\ExcelToSQL\PyXLSQL\service.py", line 37, in main
    app()
  File "D:\rs_al\IdeaProjects\ExcelToSQL\PyXLSQL\pyxlsql.py", line 14, in app
    path = config.get ("XLS", "dir")
  File "C:\Python\lib\configparser.py", line 780, in get
    d = self._unify_values(section, vars)
  File "C:\Python\lib\configparser.py", line 1146, in _unify_values
    raise NoSectionError(section) from None
configparser.NoSectionError: No section: 'XLS'

(null): (null)

Я знаю, где проблема: в main.py: print(sys.argv[0]) выход C:\Python\lib\site-packages\win32\PythonService.exe

Можно ли запустить службу так, как я хочу? Потому что теперь он ищет ini файл в C: \ Python \ lib \ site-packages \ win32 \ PythonService.exe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...