【问题标题】:Easy way to launch Python scripts with the mouse in OS-X在 OS-X 中使用鼠标启动 Python 脚本的简单方法
【发布时间】:2013-01-25 10:45:02
【问题描述】:

我想编写作为命令行程序 GUI 前端的跨平台 Python 脚本。问题是我认识一些 Mac 用户,他们认为使用终端与将计算机从摩天大楼的顶部扔下具有相同的效果。在 Linux 和 Windows 中,设置 Python 脚本很容易,因此用户可以双击图标,脚本将启动而无需打开任何额外的窗口。有没有一种简单的方法可以用 OS-X 做到这一点?用户是否必须安装与 OS-X 附带的 Python 不同的 Python?我一直无法找到明确的答案。

【问题讨论】:

  • 你试过什么?您是否在 Mac 上的某个地方有一个工作图标,可以执行与您想要的类似的操作?

标签: python macos user-interface command-line frontend


【解决方案1】:

您可能想查看Platypus。这是一个免费软件应用程序,用于生成包装脚本的应用程序。

另一种方法是使用 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 替换为您喜欢的任何脚本的路径。另存为应用程序。

同样,帮助菜单中有帮助。

【讨论】:

  • 那么唯一的方法就是创建一个应用程序?在哪里可以找到有关在 Python 中使用 Automator 和/或 AppleScript 编辑器的信息?
【解决方案2】:

py2app 沉着应对。你制作你的 Python 脚本,使用你需要的任何依赖项(wx、Tkinter 等),py2app 让你成为一个独立的应用程序包,可以在任何现代 OS X 环境中运行。它也捆绑了 Python,所以你可以使用任何你想要的 Python(不仅仅是系统默认的)。

缺点是生成的应用程序可能很大,如果您有很多依赖项,则可能高达 50MB(尽管这有点极端)。

【讨论】:

  • Mac 是否可以同时安装多个 Python,比如默认和 Active State?
  • 是的。只要将副本安装到不同的地方(例如/System/Library、/Library、/usr),或者是不同的Python版本,它们都可以愉快地共存。
【解决方案3】:

有两种方法可以做到这一点:

  1. 点击一个脚本。
  2. 按 command-i 打开“获取信息”窗口。
  3. 展开“打开方式”部分(如果还没有的话)。
  4. 从下拉菜单中选择“Python Launcher”。
  5. 如果您希望在双击时启动所有 Python 脚本,请单击“全部更改”。
  6. 可能打开 Python 启动器并取消选中“在终端窗口中运行” 这仅适用于这台机器,因此它的便携性不如以下机器。为什么?因为打开文档类型的默认值取决于安装的内容(XCode 和/或 IDLE 都将接管打开 .py 文件)。

方法二:

  1. 验证Interpreter Directive,这是文件的第一行。我建议使用/usr/bin/env python3。这将运行用户路径上的第一个 python3 解释器。
  2. 从终端使脚本可执行chmod a+x <script_name>
  3. 将扩展名从 .py 更改为 .command(这将由终端打开)。
  4. 使用 zip 或 tar 进行分发,以免权限被破坏。 此方法将打开一个终端窗口,但当 Python 窗口关闭时,终端窗口也会关闭。

如果您的脚本具有标准库之外的依赖项,那么您应该提供第二个.command 文件来安装它们。这可能会使事情变得更复杂,但使用 pip3 install --user <list of dependencies> 应该可以最大限度地减少复杂性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2018-04-19
    • 2010-12-12
    • 1970-01-01
    • 2011-07-29
    相关资源
    最近更新 更多