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

sda*_*891 7 python windows service pywin32

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

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

> python -m venv venv
> venv\scripts\activate.bat
> pip install pypiwin32
Run Code Online (Sandbox Code Playgroud)

然后按照此StackOverflow Question中的说明进行操作。我按照lindsay.stevens.au的回答运行:

> python myvenv\Scripts\pywin32_postinstall.py -install
Run Code Online (Sandbox Code Playgroud)

然后复制venv\Lib\site-packages\win32\pythonservice.exevenv\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)
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:使用Python 3.7.1 32位

小智 0

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

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

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