在Windows中将python .py文件作为服务启动

8
我已经创建了一个Windows服务,用于启动一个.py脚本。
sc create "Maraschino" binPath= "C:\HTPC\Maraschino\maraschino-cherrypy.py" DisplayName=    "Maraschino" depend= "Tcpip"

然后我添加了一个注册表键,将.py文件与python.exe关联起来打开

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Maraschino\Parameters]
"AppDirectory"="C:\\Python27"
"Application"="C:\\Python27\\python.exe C:\\HTPC\\Maraschino\\maraschino-cherrypy.py"

然而,当我尝试启动服务时,我收到错误193 0xc1的消息,谷歌搜索后发现这不是一个有效的exe文件。我知道它不是.exe文件,而是.py文件,将其链接到使用python.exe打开应该可以解决此问题,但我犯了一个错误。有没有人知道我在将脚本链接到使用python.exe时可能犯了什么错误呢?
谢谢。

尝试调用.pyc文件。 - Marcom
@Marcom 谢谢,但那不起作用。这是一个应用程序,所以它已经被编译了,而且当双击 maraschino-cherrypy.py 时可以运行它,但不能通过服务运行。 - Michael Esteves
所有这些都是重复的:http://stackoverflow.com/search?q=python+windows+service - S.Lott
3个回答

17

您可以使用Microsoft的工具srvany.exe来完成这种任务。首先,下载并安装Windows 资源工具包

注意:您只需要srvany.exe即可,在所有版本的Windows上均适用。

假定Windows资源工具包已经安装在C:\Program Files\Windows Resource Kits\,请运行以下命令:

sc create "[YourService]" binPath= "C:\Program Files\Windows Resource Kits\srvany.exe"

现在,运行 regedit

在注册表编辑器对话框中选择 HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > [YourService]

选中[YourService]后,点击工具栏上的 编辑 > 新建 > 键。

输入 Parameters 并按回车键。

从工具栏中选择 编辑 > 新建 > 字符串值。

输入 Application 并按回车键。

右键单击 Application 并选择修改。

C:\Python27\python.exe C:\[YourServicePath].py

点击“确定”按钮。

然后,你就拥有了一个漂亮的新服务。


好的,谢谢。我本来希望不用安装任何东西就能完成,但这样也可以。谢谢。 - Michael Esteves
其实你不需要安装任何东西!只需获取 srvany.exe 文件(安装一次并获取它,或者在谷歌上搜索)。 将它放入脚本文件夹并将 binPath 设为它。 这就是我们在生产环境中所做的。 - Ohad
srvany.exe - 对于没有Windows资源工具包的新PC,如何安装? - user285594
YumYumYum,您可以下载Windows资源工具包,安装后将srvany.exe复制到任何您想要的文件夹中。我将其复制到了用于服务的脚本所在的同一文件夹中。效果非常好! - Joey

0

我不知道sc是如何工作的,但我认为一定有一些方法可以将参数传递给二进制文件,所以你可以尝试注册“C:\Python27\python.exe C:\HTPC\Maraschino\maraschino-cherrypy.py”。

你也可以尝试使用py2exe :)


0

@Ohad 的更新。首先,需要将 srvany.exe 部署到所有机器上。

步骤1:

  • 下载并安装 Windows 资源工具包。
  • 在我的框中找到:C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe。
  • 然后打开命令提示符并输入以下命令:

    sc create "[YourService]" binPath="C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe" start=auto DisplayName="[YourService Monitor]"

    [SC] CreateService SUCCESS

步骤2:创建一个文件.reg,其内容如下,然后双击它。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[YourService]\Parameters]
"Application"="C:\\[YourService Executable].exe"

步骤三:现在启动服务,它将执行您在 file.reg 文件中分配的任何操作。

完成


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接