Python Windows 服务 -traceback.print_exception() 失败

问题描述 投票:0回答:1

我一直在尝试将 Python 脚本(通过 Pyinstaller 的 .PY 和 .EXE)设置为 Windows 服务。我面临的挑战是遇到的大多数问题似乎与我自己的问题无关。

我成功设置了一次虚拟环境,并运行了一个示例服务。但是,在记录我的步骤并尝试重新创建虚拟环境并运行服务时,我遇到了问题。

> python -m venv venv
> venv\scripts\activate.bat
> pip install pypiwin32

然后按照此StackOverflow问题中的说明进行操作。我按照 lindsay.stevens.au 的回答跑步:

> python myvenv\Scripts\pywin32_postinstall.py -install

然后将

venv\Lib\site-packages\win32\pythonservice.exe
复制到
venv\Scripts\pythonservice.exe

我一直在 GitHub 上使用这个 来自 HaroldMils 的服务示例作为 app.py

当我运行这个时:

> python app.py install
Installing service PythonExample
Service installed

> python app.py debug
Debugging service PythonExample - press Ctrl+C to stop.
Error 0xC0000005 - Python could find the service class in the module

<Error getting traceback - traceback.print_exception() failed

(null): (null)

我以前的虚拟环境仍然可以使用,并且脚本完全相同。我尝试删除虚拟环境并重试,结果相同。我究竟做错了什么?我无法从中获得更多调试信息。

在有效的虚拟环境上,我尝试卸载pypiwin32,重新安装,它仍然有效。

编辑:使用 Python 3.7.1 32 位

python windows service pywin32
1个回答
0
投票

如果您正在尝试多次安装重新安装,请从 python 根文件夹中删除 pythonservice.exe。安装服务时它不会被替换。

我确实绞尽脑汁,删除 pythonservice.exe 修复了它,当它再次被复制时。

使用 servicemanager==1.8.3 和 pywin32==228 对我来说适用于 python 3.7

© www.soinside.com 2019 - 2024. All rights reserved.