python应用程序到osx(mac)应用程序

python应用程序到osx(mac)应用程序,python,macos,installation,py2app,Python,Macos,Installation,Py2app,我已经为mac OS创建了Python应用程序。我正在考虑使用py2app将其转换为Mac OS应用程序。我是Mac OS新手,所以我不知道Mac OS的所有概念和文件结构,但我正在阅读有关它的文章 我的程序有两个子应用程序 子应用程序1:这将自定义xml并将xml放入launchd的plist目录中。我想在macbook启动或有人登录时运行python程序,这就是为什么我要将创建的xml文件放入launchd的plist中。此子应用程序应仅在执行安装程序时运行一次。 (请提供执行此任务的建议或

我已经为mac OS创建了Python应用程序。我正在考虑使用py2app将其转换为Mac OS应用程序。我是Mac OS新手,所以我不知道Mac OS的所有概念和文件结构,但我正在阅读有关它的文章

我的程序有两个子应用程序

子应用程序1:这将自定义xml并将xml放入launchd的plist目录中。我想在macbook启动或有人登录时运行python程序,这就是为什么我要将创建的xml文件放入launchd的plist中。此子应用程序应仅在执行安装程序时运行一次。 (请提供执行此任务的建议或任何其他方式)

子应用2:这将是我的主程序

我有以下问题,

  • 如何为Python应用程序创建安装程序,以便 将安装程序传递给我的朋友,他们就可以运行应用程序了吗?
    • 我正在阅读关于py2app的文章,但它是最常见的吗
    • 是否可以运行子应用程序1并创建子应用程序2的macos应用程序,并提供子应用程序2安装到子应用程序1的路径
  • 在执行安装程序时,如何使子应用程序1只运行一次
  • 我是否需要将python的默认库(如os、sys、libcurl等)包含在 安装程序包?如果是,我怎么做
  • 如果我朋友的电脑没有python或任何内置的程序库 python,如果他/她试图运行我的安装程序,将会发生什么,如何运行 我能阻止这种情况吗
谢谢

  • 您可以使用pyinstaller而不是py2app,考虑到它提供的控件和特性,我觉得这是一个更好的选择。在mac上使用选项
    --窗口化
    构建。这将在dist文件夹中为您提供一个(.app)文件以及unix可执行版本
  • .app文件基本上是mac应用程序结构(文件夹结构)

  • 对于您的情况,子应用程序1—您可以编写一个shell脚本,并在应用程序作为应用程序添加到macOS中时进行调用

  • subapplication2-将是您的主程序,并将在调用应用程序时运行

  • 您不必包含curl和os模块。如果这些模块导入到您的.py文件中,pyinstaller将自动为您打包

  • 您的朋友不需要安装python,pyinstaller也将打包python解释器


  • 关于你的第二个问题-可能需要编写一个shell脚本来实现这一点。

    如果我只是将一个安装程序文件传递给我的朋友来安装和使用该应用程序,py installer如何调用shell脚本?py安装程序也会打包shell脚本吗?不确定shell脚本的打包,但您可以使用python的操作系统或子进程模块编写它们,并可以随pyinstaller一起提供。