我正在尝试使用py2app将我编写的简短Python程序转换为OS X的易于分发的应用程序文件.我是通过py2app教程完成的,但当我点击我的应用程序文件时,会显示以下对话框:
找不到Python运行时.您可能需要安装Python的框架版本,或者在此应用程序的Info.plist文件中编辑PyRuntimeLocations数组.这是我第一次构建一个软件,为任何明显的失误道歉.
我不确定这是否有用,但从该对话框中单击"打开控制台"会显示以下错误:
LaunchServices: Could not store lsd-identifiers file at /private/var/db/lsd/com.apple.lsdschemes.plist launchservicesd[83]: SecTaskLoadEntitlements failed error=22appleeventsd[53]: SecTaskLoadEntitlements failed error=22 11/27/16 7:29:19.787 PMsharedfilelistd[307]: SecTaskLoadEntitlements failed error=22我知道如果py2app使用Python的"系统"版本来生成应用程序,它将不会在分发中包含该Python.但是,进入$终端中的哪个python将我引导到我的anaconda安装,所以这似乎不是问题.
这是我第一次尝试创建一个软件,所以要提前为任何明显的失误道歉.我将非常感谢任何帮助,因为我一整天都在喋喋不休.
我使用 py2app 创建了一个应用程序,它工作正常,但如果我压缩/解压缩它,新解压缩的版本将无法访问标准 python 模块,如 Traceback 或 os. zip 的联机帮助页声称它保留了资源分叉,并且我已经看到其他以这种方式打包的应用程序(我需要能够将其放入 .zip 文件中)。我该如何解决?
我想创建一个独立的应用程序,它可以在我的以外的其他 Mac 上全局使用。
我遵循了这个页面的教程:https : //www.metachris.com/2015/11/create-standalone-mac-os-x-applications-with-python-and-py2app/
但是,在构建部署步骤完成后,我想通过双击在 dist 文件夹中运行该应用程序,我收到此错误消息:
"*MYAPP* has encountered a fatal error, and will not terminate.
A Python runtime not could be located. You may need to install a framework build of Python, or edit the PyRuntimeLocations array in this application's Info.plist file"
Run Code Online (Sandbox Code Playgroud)
--> 我假设我必须在我的虚拟环境中安装 Python。此外,我知道为了解决这个问题,也许我必须使用“Macports”。我通过关注和阅读此线程并关注问题根源来了解这一点:py2app is not copy the Python.framework to the new app while using virutalenv
但即使阅读后我也不明白:
--> 如何在我的虚拟环境中安装 Python 以便为 Mac 创建独立的可执行应用程序。
当我在终端中执行它时,我的 Python 脚本运行得很好,而且我没有为这个小应用程序使用任何包,所以不应该有来自其他包的任何依赖项。
希望有人可以提供帮助。
谢谢!
---编辑--- 这是我的 setup.py 文件:
""" …Run Code Online (Sandbox Code Playgroud) 我正在使用 Anaconda 发行版中的 Python 3,并尝试将简单的 Python 程序转换为 OS X 应用程序(在 El Capitan 上运行)。按照教程中的说明,我跑了
py2applet --make-setup my-script.py
python setup.py py2app -A
Run Code Online (Sandbox Code Playgroud)
一切正常,没有错误,但是当我尝试启动应用程序时,我收到以下错误消息:
我的脚本:无法(原文如此)定位 python 运行时。您可能需要安装 Python 的框架构建,或编辑此应用程序 Info.plist 文件中的 PyRuntimeLocations 数组。
我理解这意味着我应该添加 Anaconda 的 python 路径(它在我的 bash PATH 中,但启动器不知道)。但是,自动生成的应用程序Info.plist已经指向 Anaconda python 二进制文件:
<key>PythonInfoDict</key>
<dict>
<key>PythonExecutable</key>
<string>/Applications/Experimental/anaconda/bin/python</string>
...
Run Code Online (Sandbox Code Playgroud)
我不明白这里有什么要解决的。我已阅读这些相关问题:
第一个问题涉及相同的错误消息,并按照第二个问题中的建议解决。但据我了解,这些问题描述了相反的情况:OP 正在运行与操作系统一起分发的 python,并且想要分发他们的应用程序;解决方案是使用单独安装的python。我正在使用非系统 python,我还没有尝试分发任何东西。那么是什么导致了这里的问题,解决方案是什么?