我正在使用 Anaconda 发行版中的 Python 3,并尝试将简单的 python 程序转换为 OS X 应用程序(在 El Capitan 上运行)。按照中的说明进行操作教程, I ran
py2applet --make-setup my-script.py
python setup.py py2app -A
一切运行正常,没有错误,但是当我尝试启动该应用程序时,收到以下错误消息:
my-script:无法(原文如此)找到 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>
...
我不明白这里有什么需要修复的。我已阅读这些相关问题:
- 如何在虚拟环境中使用 py2app?
- 使用 virtualenv 时 py2app 不会将 python 框架复制到新应用程序
第一个问题涉及相同的错误消息,并按照第二个问题中的建议解决。但据我了解,这些问题描述了相反的情况:OP正在运行与操作系统一起分发的python,并且想要分发他们的应用程序;解决办法是使用单独安装的python。我am使用非系统Python,我还没有尝试分发任何东西。那么到底是什么原因造成了这里的麻烦,有什么解决办法呢?
@l'L'l 的建议让我发现了问题:虽然当我在“别名模式”下生成应用程序时没有错误(使用环境符号链接而不是复制二进制文件),但在没有刷新别名模式的情况下构建应用程序出错误:py2app
寻找libpython
DLL 使用不存在的名称/Applications/anaconda/lib/libpython3.4.dylib
.
快速检查表明 Anaconda 以略有不同的名称提供此 DLL:libpython3.4m.dylib
。打补丁的同时dist/my-script.app/Contents/Info.plist
解决了问题,right解决方案是编辑setup.py
以便将来的构建能够正常工作。在的帮助下py2app 文档,我整理了以下内容(部分内容setup.py
shown):
OPTIONS = {'argv_emulation': True,
'plist': {
'PyRuntimeLocations': [
'@executable_path/../Frameworks/libpython3.4m.dylib',
'/Applications/anaconda/lib/libpython3.4m.dylib'
]
}}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
路径来自生成的Info.plist
;我只修改了绝对路径,因为如果我在相对路径中提供本地 DLL,它将具有默认名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)