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

WxPython与雪豹不兼容吗?

施永贞
2023-03-14
问题内容

最近,我升级到了Snow Leopard,现在我无法运行使用wxPython构建的程序。我得到的错误是(从Eclipse + PyDev):

  import wx 
  File "/var/tmp/wxWidgets/wxWidgets-13~231/2.6/DSTROOT/System/Library/Frameworks
  /Python.framework/Versions/2.6/Extras/lib/
  python/wx-2.8-mac-unicode/wx/__init__.py", line 45, in <module>

  File "/var/tmp/wxWidgets/wxWidgets-13~231/2.6/DSTROOT
  /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib
  /python/wx-2.8-mac-unicode/wx/_core.py", line 4, in <module>
  ImportError:/System/Library/Frameworks
  /Python.framework/Versions/2.6/Extras/lib/python
  /wx-2.8-mac-unicode/wx/_core_.so: no appropriate 64-bit architecture 
  (see "man python" for running in 32-bit mode)

我不太了解它们,如果您能帮助我做到这一点,我将不胜感激。此外,如果您知道发生了什么情况,我该如何解决它们?也许这与Snow
Leopard是64位的事实有关吗?

谢谢!!


问题答案:

问题是WxPython仅在Mac上以32位模式提供;但是,默认情况下,Python将以64位模式启动。要解决此问题,请创建以下名为python_32:的shell脚本:

#!/ bin / bash
导出VERSIONER_PYTHON_PREFER_32_BIT =是
/ usr / bin / python“ $ @”

使脚本可执行(chmod a+x python_32),然后将脚本放在路径中。现在,只需调用python_32即可获得一个交互式Python控制台,您可以在其中使用WxPython。如果你想编写一个使用这个Python脚本,你可以使用家当:#! /usr/bin/env python_32

现在解释一下…基本问题是32位和64位代码使用不同的应用程序二进制接口(ABI),因此32位代码和64位代码不能在同一库/可执行文件/进程中共存。为了支持64位模式,需要以64位模式进行编译。同样,要支持32位模式,必须以32位模式进行编译。在OS
X下,可以使用通用二进制文件来支持这两种格式……但是,它需要在两种模式下进行编译(然后合并)。WxWidgets可能使用Carbon,仅在32位模式下可用(Cocoa在32位和64位模式下都可用…由于过时了,Apple并没有在这两种模式下都可用Carbon),这就解释了为什么只能以32位模式提供WxPython的原因。反过来,

替代选项
我不建议您这样做,因为我认为您应该保留默认值,但是由于您可能没有足够的Shell脚本知识(您需要使用“
./python_32”或将其放置在以下目录中)列在“ $ PATH”环境变量中,并以“
python_32”的形式调用它)以遵循前一个选项,您可能只想执行以下命令即可将32位模式设置为默认命令:

默认写com.apple.versioner.python Prefer-32-Bit -bool是

如果您决定要切换回64位模式,则可以使用以下命令:

默认写com.apple.versioner.python Prefer-32-Bit -bool否

请注意,这两个命令都将在终端上执行(不在Python中执行)。

资料来源
我应该指出,这两个建议都是基于Mac OS X上的man
python。因此,如果您有任何其他问题,您肯定应该阅读手册页,因为错误消息已促使您这样做。



 类似资料:
  • 问题内容: 我正在使用来自AJAX发布请求的回调来导航到新页面,但是在Internet Explorer上不起作用。我的代码如下: 这在FF / Safari / Chrome上正常运行,但是当我在IE上对其进行测试时,它不起作用。是否有更好的方法重定向到新页面?我正在使用,因为如果我不使用回调,则数据不会加载到Chrome / Safari上,因为在请求完成之前页面只会更改。 问题答案: 是括号

  • 我有一个关于JavaAPI中Akka 2.0.1的问题。我有以下情况: 参与者A:从UI接收请求。然后它将执行以下操作。 等待来自UI的消息 发送msg到Actor B,以检索数据 成为一个演员,当从演员B那里得到答案时,处理它。 演员B: 等待演员A的消息 检索数据 调用; 这不起作用,演员甲也不会得到答案。然而,如果Actor B在系统中使用全局actorRef到Actor A,在我的情况下z

  • 问题内容: Websphere v8.5.5开箱即用地支持JPA 2.0 。 我正在尝试将WAR部署到Websphere v8.5.5应用程序服务器。我的persistence.xml指定为JPA提供程序。 我还设置了JPA属性: 如本PDF演示文稿和本IBM主题中所述 我的应用程序设置为“ Parent Last”类加载策略,并且在WEB-INF / lib目录中包含以下JAR: hiberna

  • 在IntelliJ 202.2的最后更新后,我得到错误: 插件“Lombok”不兼容(直到build 201.SNAPSHOT) 我一直在寻找这个问题,但似乎我是唯一一个有这个IntelliJ版本问题的人。

  • 我刚在winforms应用程序中获取的内容 我的应用程序对web Api服务进行http调用,如下所示 没什么特别的,只要你安装了Newtonsoft。通过nuget的Json(V6.0.3) 突然,我在HttpResponseMessage代码行上出现了stackOverflow错误。移除Newtonsoft,问题就解决了。 问题是我是使用库序列化/反序列化数据在其他地方在我的窗体 我的解决方法

  • 我想在Gradle上的Android项目中集成以下库: 隆坡 使用AspectJ进行机器人绑定 匕首 为了将RoboBinding与AspectJ和android工具1.1结合使用。0我使用此修复程序编译了aspectj插件。 所有库都使用一些编译时注释处理。我发现Lombok与AspectJ不兼容。我注意到Robobind的注释处理器使用的是apt,而lombok只在提供的情况下工作(Dagge