Python自动化脚本部署到Windows后台运行
很多朋友写完Python脚本后,会遇到一个共同的烦恼:双击运行会弹出一个黑乎乎的控制台窗口,关掉就停了,服务器重启又得手动启动一次。今天我们就来解决这个问题,让你的脚本像Windows服务一样在后台静默运行。
一、为什么不能直接双击运行?
Python脚本默认是控制台程序,运行时会强制弹出一个CMD窗口。对于需要长期跑、又不希望被用户误关的服务型脚本(比如定时同步、消息推送、爬虫监控),这种"前台运行"模式完全不适用。
常见的痛点有三个:
-
- 控制台窗口总是抢焦点,影响其他操作
-
- 不小心点关闭窗口,进程直接退出
-
- 电脑重启后必须人工登录再启动一次
-
二、第一招:用pythonw.exe替代python.exe
Python安装目录下其实有两套可执行文件:
| 可执行文件 | 行为 |
| python.exe | 运行.py时弹出控制台窗口 |
| pythonw.exe | 运行.pyw时无窗口,仅后台执行 |
把脚本后缀改成 .pyw,双击就不会有黑窗口了。但这只是"无窗口",还不能开机自启。
三、第二招:bat + VBS 隐藏控制台启动
这是企业里最经典的方案。我们写两个小文件配合:
1. start_hidden.vbs(用来隐藏CMD窗口)
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "run.bat", 0, False
Set WshShell = Nothing
2. run.bat(真正执行Python脚本)
@echo off
cd /d C:\Users\111\myproject
pythonw.exe main.py
双击 start_hidden.vbs,CMD窗口不会出现,Python进程已经在后台跑起来了。任务管理器里能看到 pythonw.exe,说明脚本在正常工作。
四、第三招:加入开机自启
把 start_hidden.vbs 的快捷方式丢到 Windows 启动文件夹即可:
Win + R 输入 shell:startup
把 vbs 的快捷方式拖进去
这样每次开机登录,脚本就会自动以隐藏方式启动,完全无需人工干预。
五、生产环境更优解:nssm 注册为Windows服务
如果脚本需要长期稳定运行(比如Web服务、监控守护进程),推荐用 nssm(Non-Sucking Service Manager)把它注册成Windows服务。优势在于:
-
- 支持崩溃自动重启
-
- 支持开机自启(无需登录桌面)
-
- 可以用
sc query 或 net start 管理 -
核心命令只有一行:
nssm install MyService "C:\Python39\pythonw.exe" "C:\app\main.py"
nssm start MyService
写在最后
从 pythonw.exe 到 vbs + bat,再到 nssm 服务化,脚本的"后台化"程度越来越高。个人小工具用第二种就够,企业级服务建议直接上第三种。掌握这套组合拳,你写的任何Python程序都能在Windows上"7×24"无人值守运行。
扫码添加秦杰,探讨AI智能体落地应用