Python 将脚本转换为macOS应用程序?

Python 将脚本转换为macOS应用程序?,python,applescript,Python,Applescript,我一直在研究如何将.py脚本转换为.app应用程序,以便用户知道如何运行它。到目前为止,我只发现使用py2app或pyinstaller。使用通过将以下脚本导出到应用程序并将我的python脚本放入应用程序的资源文件夹而生成的应用程序是否存在显著的缺点?(我的python脚本有一个GUI,只使用python 2.7中的内置库。) 告诉应用程序“Finder” 如果存在POSIX文件“/Applications/app.app/Contents/Resources/appname.py”,则 告诉

我一直在研究如何将.py脚本转换为.app应用程序,以便用户知道如何运行它。到目前为止,我只发现使用py2app或pyinstaller。使用通过将以下脚本导出到应用程序并将我的python脚本放入应用程序的资源文件夹而生成的应用程序是否存在显著的缺点?(我的python脚本有一个GUI,只使用python 2.7中的内置库。)

告诉应用程序“Finder”
如果存在POSIX文件“/Applications/app.app/Contents/Resources/appname.py”,则
告诉应用程序“终端”
执行脚本“python/Applications/app.app/Contents/Resources/appname.py”
结束语
否则,如果存在POSIX文件“/Volumes/appname/appname.py”,则
告诉应用程序“终端”
执行脚本“python/Volumes/appname/appname.py”
结束语
其他的
显示对话框“请将文件复制到应用程序文件夹,或装入安装磁盘映像”
如果结束
结束语
告诉应用程序“终端”
关闭
结束语

它在我的电脑上运行得很好,所以我只是好奇为什么我在互联网上找不到它。

我有两个建议

  • 使用当前应用程序的
    路径
    ,这样您就拥有了该路径 应用程序所在的位置
  • “更干净”的方法是使用
    do shell脚本,而不是使用终端,如:

    do shell script”/path/to/my/script/script.py“

只要脚本是“chmod”,就可以执行(我也喜欢为此使用一个名为“km”的实用程序)


除此之外,你尝试做的事情没有危险或错误。

我有两个建议

  • 使用当前应用程序的
    路径
    ,这样您就拥有了该路径 应用程序所在的位置
  • “更干净”的方法是使用
    do shell脚本,而不是使用终端,如:

    do shell script”/path/to/my/script/script.py“

只要脚本是“chmod”,就可以执行(我也喜欢为此使用一个名为“km”的实用程序)


除此之外,您尝试做的事情没有任何危险或错误。

我不知道Mac OS是否内置了python,但我怀疑它是否是。当您使用py2app之类的工具时,它们会将整个python解释器与您的程序捆绑在一起。这意味着您的5KB脚本现在是一个35MiB应用程序。在内置Python的操作系统上,这只是一种浪费。这并不重要,除了下载时间。所以,有些东西需要注意,但实际上并不是你可以选择的。@GRAYgoose124 Python 2.7是内置的,你只需在终端中键入“Python”就可以使用它。顺便说一句,tkinter 8.5.9也内置于macOS中。在这种情况下,您可以将其重命名为*.pyw文件,这样终端就不会显示,然后再放入
#/usr/bin/env python
位于其顶部。(假设这是一个单独的文件,如果不是的话,它仍然可以工作,但我会明白为什么你要捆绑它),然后它可以运行只要点击,我想你可以复制到应用程序菜单了。shebang行告诉操作系统使用哪个程序来运行当前文件。我不知道python是否内置于Mac OS,但我怀疑它是否是。当您使用py2app之类的工具时,它们会将整个python解释器与您的程序捆绑在一起。这意味着您的5KB脚本现在是一个35MiB应用程序。在内置Python的操作系统上,这只是一种浪费。这并不重要,除了下载时间。所以,有些东西需要注意,但实际上并不是你可以选择的。@GRAYgoose124 Python 2.7是内置的,你只需在终端中键入“Python”就可以使用它。顺便说一句,tkinter 8.5.9也内置于macOS中。在这种情况下,您可以将其重命名为*.pyw文件,这样终端就不会显示,然后再放入
#/usr/bin/env python
位于其顶部。(假设这是一个单独的文件,如果不是的话,它仍然可以工作,但我会明白为什么你要捆绑它),然后它可以运行只要点击,我想你可以复制到应用程序菜单了。shebang行告诉操作系统使用哪个程序运行当前文件。非常感谢!因此,我将我的脚本更改为
告诉应用程序“Finder”将当前路径设置为容器的(路径到我)别名end tell do shell script POSIX path of current_path&“myscript.py”
,但它说“sh:权限被拒绝”。我不知道为什么,因为该软件在我的桌面上。向用户请求sudo权限有时会吓到他们。好吧,我解决了。我刚刚在网上找到了如何将脚本转换为可执行文件。我不经常使用终端,所以我不明白您所说的“chmod”是指什么。谢谢!没问题。完全值得自学(或学习)外壳(终端)。非常感谢!因此,我将我的脚本更改为
告诉应用程序“Finder”将当前路径设置为容器的(路径到我)别名end tell do shell script POSIX path of current_path&“myscript.py”
,但它说“sh:权限被拒绝”。我不知道为什么,因为该软件在我的桌面上。向用户请求sudo权限有时会吓到他们。好吧,我解决了。我刚刚在网上找到了如何将脚本转换为可执行文件。我不经常使用终端,所以我不明白您所说的“chmod”是指什么。谢谢!没问题。完全值得自学(或学习)外壳(终端)。