如何让Python Command Line Scripts程序像pythonw一样后台运行
Python打包入口实现pythonw式无控制台运行的设置方法
默认通过console_scripts配置生成的程序启动器,在Windows平台会绑定控制台子系统,启动时自动弹出命令行窗口,和python.exe运行效果一致;要实现pythonw运行时的后台无控制台效果,按以下方式调整配置即可:
替换入口配置节点
将setup.py(或pyproject.toml)中原本的console_scripts配置替换为gui_scripts配置,入口映射写法保持不变:# 原配置 "console_scripts": ["app_name = app_name.app:main"], # 替换为以下配置 "gui_scripts": ["app_name = app_name.app:main"],该配置在Windows平台下会自动生成标记为GUI子系统的启动程序,启动时不会创建控制台窗口,完全匹配
pythonw的运行效果。补充说明
gui_scripts是setuptools原生支持的配置项,不需要额外安装依赖,打包后不会出现启动器兼容性问题,也不会触发杀毒软件误报- 该配置仅对Windows平台生效,在macOS、Linux系统下
gui_scripts和console_scripts的运行行为没有差异,不会额外唤起终端窗口 - 如果程序需要同时提供命令行交互入口和无控制台后台入口,可以同时配置两个节点,分别对应不同的启动命令:
"console_scripts": ["app_name-cli = app_name.app:main"], "gui_scripts": ["app_name = app_name.app:main"], - 不建议通过修改打包后exe的子系统标记、额外套一层隐藏窗口的启动脚本这类曲线方案实现需求,稳定性远低于原生
gui_scripts配置。
内容的提问来源于stack exchange,提问作者Paul Sender
相关产品推荐
相关产品推荐

