Platypus:把 Shell 和 Python 脚本打包成能双击启动的 macOS 应用
发布时间:2026/8/27 17:08:15 作者:尧图编辑部 阅读量:1,286

Platypus把 Shell 和 Python 脚本打包成能双击启动的 macOS 应用【免费下载链接】PlatypusCreate native macOS applications from command line scripts.项目地址: https://gitcode.com/gh_mirrors/pl/Platypus每次写完脚本最后一步往往最闹心想递给同事他不会往终端里敲命令自己又懒得学 GUI 开发。Platypus 解决的就是这一步——把 shell 脚本或 Python、Perl、Ruby 脚本包装成一个可双击启动的 macOS .app 应用全程不写一行 GUI 代码。脚本和应用之间隔着一整套应用包结构传统做法是把脚本变成正规 Mac 应用先搞懂应用包bundle的目录结构手写 Info.plist再处理可执行文件和窗口折腾下来一两天就没了而你的脚本可能只有一屏。Platypus 把这条路径压缩成一次包装操作。它 2003 年首次发布维护了二十多年用 Objective-C/Cocoa 编写以 BSD 3-Clause 协议开源。你不需要读 Objective-C也不需要理解 Cocoa生成的应用却能像其他任何 Mac 应用一样从 Finder 或 Dock 启动。Platypus 的工作机制给脚本套一层 .app 壳原理并不神秘。macOS 的 .app 本质上就是一个有固定结构的文件夹双击启动时执行的其实是 Contents/MacOS 里的二进制。Platypus 生成的正是这样一个 bundle只不过里面的二进制是一个通用的瘦可执行文件它读取 AppSettings.plist 里的配置运行你的脚本再把输出送到你选定的界面上。脚本和随附文件统一放进 Contents/Resources 目录。所以生成的应用体积小、启动快——它只携带脚本本身和少量界面资源。这个通用二进制的源码在仓库的 ScriptExec/SEController.m 里通读一遍就能理解生成应用的完整运行过程。用 Platypus 三步生成第一个应用不用编译也能用官方发布版约 3.5 MB支持 macOS 11 及以上、Apple Silicon 和 Intel 两种架构。如果习惯自己构建一条命令即可需要 Xcode 构建工具git clone https://gitcode.com/gh_mirrors/pl/Platypus cd Platypus make build_unsigned产物会出现在products目录中。界面操作只有三步打开 Platypus点Select选脚本也可以直接把脚本文件拖进窗口。打开脚本后它会根据文件后缀和 shebang 行自动识别解释器。输入应用名称选择界面类型按需更换图标、填写标识符和作者信息。点Create指定目标位置一个 .app 就生成了。Platypus 主界面选好脚本、设置名称与界面后右侧 Create 即可生成应用六种界面给脚本配一张合适的脸 ✨同一个脚本配哪种脸比想象中重要。Platypus 提供 6 种界面类型各自对应一类典型用法None完全无窗口纯后台跑脚本输出重定向到 stderr适合登录项、定时任务。Progress Bar执行时显示进度条窗口脚本可以实时更新百分比适合耗时任务。Text Window把脚本输出逐行显示在窗口里适合日志、报告类脚本。注意它不是可交互终端。Web View输出按 HTML 渲染。页面基准目录就是应用的 Resources把图片和样式文件加进 Bundled Files 后可以用相对路径引用。Status Menu在菜单栏放一个图标每次点击都会运行脚本输出行变成菜单项选中某一项后脚本再跑一次并收到该项的标题作为参数。Droplet一个提示拖放的窗口文件丢上来后逐个交给脚本处理。Web View 界面脚本输出的 HTML 直接在 WebView 窗口中渲染让脚本驱动界面拖文件进来、进度走出去应用跑起来后还有两个问题输入怎么进进度怎么出。Platypus 的方案是命令行参数加脚本打印的约定行。输入方向勾选Accept dropped items后应用就能接收拖放到窗口或 Dock 图标上的文件与文本——文件路径作为参数传给脚本文本片段写入 stdin。Drop Settings里可以按文件后缀或 UTI 限定接受的类型文件夹就加public.folder。还可以把应用注册成 URI scheme 处理器或系统服务。Args 面板给解释器和脚本分别指定参数例如 bash 加 -l 以登录 shell 方式运行输出方向脚本只要打印几行约定文本。PROGRESS:75更新进度条ALERT:标题|内容弹警告框NOTIFICATION:标题|内容推送通知中心REFRESH清空输出缓冲QUITAPP结束应用。随附资源加进Bundled Files列表即可它们会被复制进 Resources脚本从工作目录直接就能取到。Drop Settings按 UTI 或后缀限定应用接受的拖放类型一行终端命令Platypus 命令行工具想把应用生成放进构建流水线就不必点界面。Platypus 附带同名命令行工具在Settings里一键安装二进制装到/usr/local/bin/platypus装完后它完全独立于图形界面运行。生成一个应用只需一行platypus -a 图片压缩器 -o Droplet -i icon.icns resize.py更省事的是图形界面里的Show Shell Command会把当前设置翻译成等价的命令行直接复制进脚本。你也可以把整套设置存成 .platypus 配置文件用-P参数加载后批量生成。命令行工具安装位置二进制、ScriptExec、nib 与 man 页都放在 /usr/local 下适用边界Platypus 做不了什么官方把边界写得很清楚它不是 GUI 开发环境也不能用来做复杂交互的应用。要做后者还是得学原生 APIPlatypus 只负责把脚本到可双击应用这一小段路走快。几个常被问到的问题直接说生成的应用能拿到别的 Mac 上用吗可以应用本身只是个 bundle。但脚本在目标机器上必须有对应解释器Python、Perl、Ruby、shell 这些预置语言在 macOS 上通常都自带。脚本里能弹输入框问用户要信息吗不能直接问。文本窗口不是可交互终端stdin 是断开的sudo或 Python 的input()会直接挂住。要提问就借osascript弹 AppleScript 对话框或者让用户通过拖放传参。首次运行被 GateKeeper 拦住了生成的应用默认不签名macOS 会提示确认。可以右键选择打开信任它正式分发前用codesign自己签一遍。需要 Xcode 才能用吗不需要。Xcode 构建工具只在从源码编译或者你想压缩 nib 文件时才用到。下一步与延伸资源 想继续深入按顺序做三件事从 Profiles 菜单的Examples子菜单打开示例。仓库 Examples/ 目录里有 18 个 .platypus 配置涵盖拖放图片缩放、状态栏菜单、URI scheme 处理器等场景逐个拆开看最直观。通读 Documentation/Documentation.md六种界面的全部行为、约定行语法和常见问题都在里面。准备自动化时先装命令行工具再对照 CLT/platypus_clt.m 的源码把图形界面里的每一步设置变成可重复执行的命令。【免费下载链接】PlatypusCreate native macOS applications from command line scripts.项目地址: https://gitcode.com/gh_mirrors/pl/Platypus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考