当前位置: 首页 > 面试题库 >

在pyenv中使用py2app使用非系统Python构建的应用无法在其他计算机上运行

况繁
2023-03-14
问题内容

我的理解是,只要使用非Apple默认的Python进行构建,最终用户就无需自己安装Python即可执行py2app构建的应用程序。在我自己的环境中开发和测试应用程序时,显然我已经安装了Python。具体来说,我使用python.org安装而不是Apple自己构建的
pyenv 。但是,当我将应用程序提供给未安装Python的最终用户时,她会得到:

找不到Python运行时。您可能需要安装Python的框架版本,或在此应用程序的Info.plist文件中编辑PyRuntimeLocations数组

第二行涉及;如果它指出是真的,那么一个单独的应用程序实例都需要建立一个最终用户的每一个可能的位置的install例如/usr/bin/Library/Frameworks等等。

更新: Info.plist定义:

    <key>PythonExecutable</key>
<string>/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python</string

然而,最终用户仅在中安装了系统/usr/bin

这是否意味着每个最终用户都需要拥有一个外部安装的Python,并且它必须存在于
/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python

如果他们没有非Apple Python怎么办?如果他们有非Apple Python但不是2.6怎么办?如何避免这种硬编码的依赖关系?


问题答案:

--semi- standalone如果py2app认为您正在使用系统解释器,则会自动默认为mode。您不应该将来自Python.org的解释器视为“系统”解释器,但是您可以看到py2app使用此命令的想法:

$ python -c "import py2app.build_app; print py2app.build_app.is_system()"
False

需要注意的一个问题:今天我安装了Python.org解释器后,bash没有更新它的hash缓存,因此当我启动python时会引起奇怪的不兼容性。我必须键入hash -r python以重置缓存,并确保正在使用正确版本的python。(解决此问题的另一种方法是注销并再次登录。)我想可能是同一问题可能导致py2app您是否正在使用系统python感到困惑。

如果那不能解决问题,请尝试将python解释器安装到类似这样的怪异位置,~/mypython以确保不会将它与系统python混淆。

作为最后的选择,我想您可以修改py2app源代码,以便is_system()始终返回False。不过,不确定是否会带来任何不良后果。

PS-
这是一个py2appconda打包的应用程序一起使用的小教程:https
:
//github.com/stuarteberg/helloworld
与此处的问题并不完全相关,但是您可以将其与自己的设置进行比较,并查找任何明显的差异。



 类似资料:
  • 本文向大家介绍Android使用Intent启动其他非系统应用程序的方法,包括了Android使用Intent启动其他非系统应用程序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android使用Intent启动其他非系统应用程序的方法。分享给大家供大家参考,具体如下: android应用程序内部通过Intent来实现Activity间的跳转。也知道通过Intent调用系统程序。但

  • 我使用netbeans创建了一个类似计算器的应用程序。我试着将jar文件转换成一个文件。exe文件,启动4j,最小值。其他时间的jre为1.1.0和1.6_32。 这个应用程序在我的笔记本电脑上打开得很好,但是在我尝试部署的其他笔记本电脑上没有打开。信息是“该应用程序需要最小的. jre为.1.1.0......”然后接下来它试图打开浏览器到甲骨文网站下载。 我能做些什么,使这个程序可以在其他台式

  • 我正在使用Intellij Idea 11.1.3(我也在Eclipse中试用过)和JRE1.7。我的操作系统是Win7x64。 当我双击我使用IntelliJ创建的jar文件时,我的程序工作得很好。此外,当我执行命令“java-jar*.jar”时,它也起作用,其中*是我的jar文件的名称。 现在我想创建一个.exe文件,这样我就可以在其他计算机上运行该程序了。 我用Winrar打开了.jar文

  • 我正在尝试使用python中的selenium来使用javascript刮取一些动态页面。但是,在我遵循pypi页面上的selenium指令之后,我无法调用firefox(http://pypi.python.org/pypi/selenium).我在AWS ubuntu 12.04上安装了firefox。我收到的错误消息是: 我在网上搜索了一下,发现这个问题发生在其他人身上(https://gr

  • 有没有一种方法可以在非根android设备上使用系统签名的应用程序进行系统范围的网络过滤? 类似于在根设备中使用iptables binary的应用程序。