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.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)
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