在pyenv中使用py2app并使用非系统Python构建的应用程序无法在其他机器上运行
我的理解是,只要使用非苹果默认的Python进行构建,最终用户就不需要自己安装Python来执行py2app构建的应用程序。在我自己的环境中开发和测试应用程序时,我显然安装了Python。具体来说,我使用python.org安装了一个pyenv,而不是苹果自己的。然而,当我将应用程序交给没有安装Python的最终用户时,她得到了: 找不到Python运行时。您可能需要安装一个 Python的框架构建,或在中编辑PyRuntimeLocations数组 此应用程序的Info.plist文件 第二条线是关于;如果所述为真,则需要为最终用户安装的每个可能位置构建单独的应用程序实例,例如在pyenv中使用py2app并使用非系统Python构建的应用程序无法在其他机器上运行,python,macos,python-2.7,py2app,pyenv,Python,Macos,Python 2.7,Py2app,Pyenv,我的理解是,只要使用非苹果默认的Python进行构建,最终用户就不需要自己安装Python来执行py2app构建的应用程序。在我自己的环境中开发和测试应用程序时,我显然安装了Python。具体来说,我使用python.org安装了一个pyenv,而不是苹果自己的。然而,当我将应用程序交给没有安装Python的最终用户时,她得到了: 找不到Python运行时。您可能需要安装一个 Python的框架构建,或在中编辑PyRuntimeLocations数组 此应用程序的Info.plist文件 第二条
/usr/bin
,/Library/Frameworks
等
更新:Info.plist定义:
<key>PythonExecutable</key>
<string>/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python</string
PythonExecutable
/如果py2app认为您正在使用系统解释器,则Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Pythonpy2app会自动默认为--半独立
模式。来自Python.org的解释器不应算作“系统”解释器,但使用此命令可以看到py2app
的想法:
$ python -c "import py2app.build_app; print py2app.build_app.is_system()"
False
需要注意的一个问题是:在我今天安装了Python.org解释器之后,bash
没有更新它的hash
缓存,在我启动Python时造成了奇怪的不兼容。我必须键入hash-rpython
来重置缓存,并确保使用了正确版本的python。(解决此问题的另一种方法是注销并再次登录。)我认为同样的问题可能导致py2app
对您是否在使用系统python感到困惑
如果这不起作用,那么试着将python解释器安装到一个奇怪的位置,比如~/mypython
或类似的地方,以确保系统python不会混淆它
作为最后一种手段,我想您可以破解py2app
源代码,这样is\u system()
总是返回False
。不过,不确定这是否会产生任何不利后果
PS——这里有一个关于使用py2app
和conda
打包应用程序的小教程:
这里与您的问题不完全相关,但您可以将其与您自己的设置进行比较,并查找任何明显的差异。find myappliance.app-name Python.framework
不返回任何内容