使用 Nuitka 将 Python 程序编译为 Windows 服务

原来 Nuitka 商业版通过插件已经实现了编译 Windows service 的功能,但开源版本不提供此功能。掏钱是不可能掏钱的。本人 fork 了 Nuitka 项目,加入了编译 Windows service 的功能,只要在编译时加入 --windows-service 参数就将 Python 程序能构建成 Windows service 了:

shellpip install nuitka-winsvc
nuitka --onefile --windows-service --windows-service-name=myservice main.py

项目地址: https://github.com/tabris17/Nuitka-winsvc

在前文《Nuitka 编译时注入自定义 C 代码》中介绍了在 Nuitka 编译时注入自定义代码的方法。本文将介绍如何通过这种方法将 Python 程序编译成 Windows 服务。

……

Nuitka 编译时注入自定义 C 代码

Nuitka 是一款用 Python 实现的 Python 编译器,可以生成独立的可执行文件。其原理是生成 C 代码,然后使用 Scons 调用 C 编译器进行编译构建。据说使用 Nuitka 编译后的程序性能比 CPython 更好,和传统的打包工具 py2exe 与 PyInstaller 相比, Nuitka 的优势相当明显。

Nuitka 的使用也十分简单。比如要将下面的 main.py 文件进行打包:

python# main.py

print("Nuitka")

首先安装 Nuitka 和建议安装的三方库:

shellpip install nuitka ordered-set zstandard

另外,编译 C 代码还需要一个支持 C11 标准的 C 编译器。 Windows 系统上可以安装 Visual Studio 2022 或者 MinGW64 。然后就能用 nuitka 命令进行编译了:

……

Fournoas 说:

于人肉趟雷的十四天后,交战三方在板门店签署了《朝鲜停战协定》

Fournoas 说:

与其说是“全面放弃动态清零”,不如说是“动态清零全面破产”更为恰当。现在的惨象无非是破产后的清算。

锁狗们把现在人道灾难甩锅到唐飞头上,不过是无能狂怒罢了。真正的罪魁祸首它们却连名字都不敢提。

Fournoas 说:

智慧设计论唯一能让人信服的证据——无论儿童或是成人,其小手指总能严丝合缝地捅进自己的鼻孔,简直就是为抠鼻屎量身打造的。
如此纤细修长的手指,不用来抠鼻屎真的可惜了。

Fournoas 说:

作为我国传统文化之一,中医最大的贡献就是没有“发现”大熊猫的药用价值。我们现在能在家里用手机刷大熊猫视频,这都应该感谢中医🙏

Fournoas 说:

宇宙纪元 U.C 20XX 年,银河系民主主义屁民共和国因财政枯竭,导致执行三年的多态除零疫情防控政策破产,转而实行应阳尽阳、应死尽死、快速达峰、振兴经济的新型防疫政策。要求全国屁民积极出门接受银河系社会主义阳性大改造。对于拒不出门接受改造的顽固分子,国家将派出风暴突击兵上门碰洒病毒。

Fournoas 说:

这未免也太强人所难不切实际了。不过每个小区门口安排一个白卫兵,并用铁丝网围起来,这倒是一点也不难

Fournoas 说:

问:当前我们在历史研究中遇到的主要矛盾是什么?

答:主要是历史记忆的准确性和正确性之间的矛盾。

Fournoas 说:

医护人员停止每日核酸检测,总路线已飞向冥王星。

本来人均医疗资源就低,如果医护人员出现大规模感染,谁来给病人看病?这是打算疫情闯关了吗?别忘了上次价格闯关失败是什么下场!

最佳开放的窗口期本应是今年入夏之前。冬季是呼吸道疾病心血管疾病高发季节,再赶上这趟骚操作,真是应死尽死了。

要么胡作非为,要么彻底摆烂,一根单细胞二极管,既不尊重生命,也不尊重科学。还保护老人孩子,呵呵