Python有一个win32service似乎允许创建Windows服务的包.我仔细检查了可用的google示例,例如这一个:
是否可以在Windows中将Python脚本作为服务运行?如果可能,怎么样?
我已~/Documents/test.py在提升的命令提示符下放入代码并执行以下操作:
> python test.py install
> python test.py debug
Run Code Online (Sandbox Code Playgroud)
不幸的是,我尝试的每个例子都失败了,错
Debugging service TestService - press Ctrl+C to stop.
Error 0xC0000005 - Python could find the service class in the module
AttributeError: 'module' object has no attribute 'AppServerSvc'
(null): (null)
Run Code Online (Sandbox Code Playgroud)
我在Windows 7 64位和Windows 8 64位上测试了最新版本的ActivePython(2.7.2.5 32位).当然,如果通过服务管理器手动启动服务,它也不会启动.
我做错了什么或者Python不打算用于现代操作系统上的服务创建?也许我需要特定版本的windows/python/pywin32?当然,我可以手动测试从Windows XP开始的所有组合,但这将需要很多时间:(.也许有人已经有Python和Windows服务的经验,并可以暗示我做错了什么?
更新
在Windows XP 32位虚拟macine上测试(相同的代码,相同的activepython发行版) - 同样的错误.
小智 1
PyWin32 的 ActiveState 构建中似乎存在错误。安装 ActiveState python 2.7.2.5 并运行上面链接的示例代码,我得到与您报告的相同的错误。
但是如果我下载Python 2.7.3(2.7.2.5似乎无法下载)并添加PyWin32 build 214(ActiveState似乎使用214版本的PyWin32)。然后一切似乎都很顺利。我还尝试了最新版本的 PyWin32 (218),它也工作正常。
所以我想你可以尝试向 ActiveState 报告问题(我没有与他们签订支持合同),除非你有使用 ActiveState 的要求,否则你可以切换到标准 Python 版本。
多年来,我一直使用标准 Python 构建的服务,在从 Windows 2000 到 Server 2008 和 Windows 7 的所有设备上运行,没有出现任何问题。所以我有充分的理由相信它也适合你。
如果您想使用 ActiveState 来解决问题,那么该错误似乎出现在他们构建的 PythonService.cpp 的 LoadPythonServiceInstance 函数中。我查看了创建的注册表项,它们看起来很好,这是 PythonService.exe 无法加载您的类。根据错误消息,它似乎已正确加载模块,只是在查找类时遇到问题。
| 归档时间: |
|
| 查看次数: |
2111 次 |
| 最近记录: |