python - macOS Bundle 从 shell 脚本调用 python
问题描述
我在 macOS 上制作了一个小 shell 脚本 + python 工具,我希望能够从扩展坞运行。它在终端上运行良好。
我按照我在网上找到的指南制作了一个 Bundle,这似乎是在 Mac 的 Dock 中获取脚本的最轻量级的方法。
OpenRandomFile.app/
Contents/
MacOS
OpenRandomFile
OpenRandomFile
具有可执行权限集并以 zsh shebang 开头的 shell 脚本在哪里。
该脚本从 Python 脚本中捕获文件名输出,如下所示:
open -R "`/usr/bin/python ./randomfile.py`"
我已经尝试randomfile.py
在包内和文件系统外使用 Python 脚本,始终使用完整路径。
当我从扩展坞或其他地方的捆绑图标运行它时,它会打开一个根驱动器的 Finder 窗口,忽略 Python 脚本。
我是 macOS 黑客的新手,所以我不知道如何调试它。它从终端运行,但我根本不希望停靠版本打开终端,但它没有,但这意味着我无法从 shell 脚本或 python 打印调试字符串。所以我根本不知道如何验证 Python 是否正在执行。
我首先怀疑某些部分没有访问目录的权限,但是在这种情况下,macOS 通常会向用户显示一个对话框。我现在怀疑这与沙盒有关,所以我希望将 Python 脚本移动到 Bundle 中会解决这个问题。
到目前为止,我还没有 info.plist 文件,也不能 100% 确定如何正确制作。在 info.plist 中添加 Python 脚本会以某种方式将其注册为捆绑包的正式一部分吗?
关于 macOS 包中的 python 脚本的问题很少,所以我只用谷歌搜索就走运了。
虽然我确信有一些解决方法,但我确信值得花时间了解 macOS 捆绑包中的可能性或不可能性,以及如何正确设置和调试它们。
解决方案
推荐阅读
- reactjs - 返回一个对象数组和函数打字稿
- node.js - Does Heroku free tier support a video chat app?
- javascript - 为什么`useCallback`不能总是返回相同的引用
- php - 如何在 Laravel 的下拉(选择)菜单中打印无限嵌套类别
- python - 从 tf.data.Dataset 获取元组的元素
- javascript - 导入的 CSS 文件和依赖项在 React.Js 中的所有组件中都可用
- c - 遍历和修改 C json 字符串
- java - spring rest 没有按正确的顺序设置 id 值
- android - 淡入淡出的字符串列表
- wordpress - Woocommerce如何在从低到高的排序中排除没有设置价格的产品