我想编写作为命令行程序的 GUI 前端的跨平台 Python 脚本。问题是我认识一些 Mac 用户,他们认为使用终端与将计算机从摩天大楼的顶部扔下具有相同的效果。在 Linux 和 Windows 中,设置 Python 脚本很容易,因此用户可以双击图标,脚本将启动而无需打开任何额外的窗口。有没有一种简单的方法可以用 OS-X 做到这一点?用户是否必须安装与 OS-X 附带的 Python 不同的 Python?我一直无法找到明确的答案。
3 回答
你可能想看看鸭嘴兽。这是一个免费软件应用程序,用于生成包装脚本的应用程序。
另一种方法是使用 Automator 甚至 AppleScript Editor。两者都可以生成只运行脚本的应用程序。
更新:
对于 Automator:启动 Automator,选择应用程序模板,在搜索字段中输入“脚本”,双击 Run Shell Script,将 shell 弹出菜单切换为/usr/bin/python
,在文本字段中输入/粘贴您的 Python 脚本。或者,保留弹出菜单/bin/bash
并在文本字段中编写一个外部脚本的调用。另存为应用程序。
您还可以从其帮助菜单中查看帮助。
对于 AppleScript,启动 AppleScript Editor,键入以下脚本:
do shell script "/usr/bin/true"
替换/usr/bin/true
为您喜欢的任何脚本的路径。另存为应用程序。
同样,帮助菜单中有帮助。
py2app沉着地做到这一点。你制作你的 Python 脚本,使用你需要的任何依赖项(wx、Tkinter 等),py2app 让你成为一个独立的应用程序包,可以在任何现代 OS X 环境中运行。它也捆绑了 Python,因此您可以使用任何您想要的 Python(不仅仅是系统默认值)。
缺点是生成的应用程序可能很大,如果您有很多依赖项,则可能高达 50MB(尽管这有点极端)。
有两种方法可以做到这一点:
- 单击一个脚本。
- 按 command-i 打开“获取信息”窗口。
- 展开“打开方式”部分(如果还没有)。
- 从下拉菜单中选择“Python 启动器”。
- 如果您希望在双击时启动所有 Python 脚本,请单击“全部更改”。
- 可能打开 Python Launcher 并取消选中“在终端窗口中运行”这仅适用于这台机器,因此它的便携性不如以下。为什么?因为打开文档类型的默认值取决于安装的内容(XCode 和/或 IDLE 都将接管打开 .py 文件)。
方法二:
- 验证Interpreter Directive,这是文件的第一行。我建议使用
/usr/bin/env python3
. 这将运行用户路径上的第一个 python3 解释器。 - 使脚本
chmod a+x <script_name>
从终端可执行。 - 将扩展名从 .py 更改为 .command(这将由终端打开)。
- 使用 zip 或 tar 进行分发,以免权限被破坏。此方法将打开一个终端窗口,但当 Python 窗口关闭时,终端窗口也将关闭。
如果您的脚本具有标准库之外的依赖项,那么您应该提供第二个.command
文件来安装它们。这可能会使事情变得更复杂,但使用pip3 install --user <list of dependencies>
应该尽量减少并发症。