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

wxPython中的“通用包装中没有匹配的体系结构”问题?

颛孙正卿
2023-03-14
问题内容

我在Mac OS 10.6.4下运行Python 2.7,并且刚刚从wxPython2.8-osx-unicode-2.8.11.0-universal- py2.7.dmg二进制文件安装了wxPython 。import wx我的Python脚本中出现了一个奇怪的错误。仅供参考,我可以从PyCrust导入wx模块。我真的看不到我在这里做错了什么。谁能帮忙吗?

  File "prod_cons_wx.py", line 6, in <module>
    import wx 
  File "/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/__init__.py", line 45, in <module>
    from wx._core import *
  File "/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/_core.py", line 4, in <module>
    import _core_
ImportError: dlopen(/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/_core_.so, 2): no suitable image found.  Did find:
    /usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/_core_.so: no matching architecture in universal wrapper

问题答案:

看来,附带的wxPython 2.7 DMG C扩展模块这里是仅32位。

$ cd /usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx
$ file *.so
_animate.so:   Mach-O universal binary with 2 architectures
_animate.so (for architecture ppc): Mach-O bundle ppc
_animate.so (for architecture i386):    Mach-O bundle i386
_aui.so:       Mach-O universal binary with 2 architectures
_aui.so (for architecture ppc): Mach-O bundle ppc
_aui.so (for architecture i386):    Mach-O bundle i386
...

不幸的是,platform.architecture()它不能准确指示Python正在运行的OS X多种体系结构。例如,对于Python
2.7使用3-arch python.org安装程序,platform.architecture()即使在32位模式下运行,也始终报告64位。 :

$ cd /Library/Frameworks/Python.framework/Versions/2.7
$ file python2.7
python2.7: Mach-O universal binary with 3 architectures
python2.7 (for architecture i386):  Mach-O executable i386
python2.7 (for architecture ppc7400):   Mach-O executable ppc
python2.7 (for architecture x86_64):    Mach-O 64-bit executable x86_64
$ arch -x86_64 ./python2.7 -c 'import platform, sys; print "{0}, {1:x}".format(platform.architecture()[0], sys.maxint)'
64bit, 7fffffffffffffff
$ arch -i386 ./python2.7 -c 'import platform, sys; print "{0}, {1:x}".format(platform.architecture()[0], sys.maxint)'
64bit, 7fffffff
$ arch -ppc ./python2.7 -c 'import platform, sys; print "{0}, {1:x}".format(platform.architecture()[0], sys.maxint)'
64bit, 7fffffff

可靠的方法是检查sys.maxintPython 2或sys.maxsizePython 3。

您没有在问题中指出如何调用Python。是通过脚本文件中的shebang行吗?如果是这样,您可能没有运行您认为是的Python。另外,您不会指出已安装的Python
2.7。例如,当前有两个来自python.org的Python 2.7安装程序:一个安装程序同时支持32位和64位执行,另一个仅支持32位。请尝试以下操作:

$ file $(python2.7 -c 'import sys;print(sys.executable)')
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: Mach-O universal binary with 3 architectures
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python (for architecture i386):   Mach-O executable i386
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python (for architecture ppc7400):    Mach-O executable ppc
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python (for architecture x86_64): Mach-O 64-bit executable x86_64

因此:如果您具有Python的多体系结构版本,则需要强制其以32位模式运行,以利用预编译的wxPython。



 类似资料:
  • 问题内容: 我想确保我的项目在软件包之间不包含不必要的依赖关系。例如,我要确保项目具有分层结构。即模型位于一切之下,业务逻辑取决于模型,视图取决于业务逻辑和模型。每层都放置在自己的包装中。 您能推荐一些开源工具,让我指定这些约束并将其作为持续集成的一部分进行检查吗? PS我知道我可以在单独的Maven模块中分离项目。不幸的是,我的现实情况比三层系统更复杂。如果我使用Maven模块,那么我将拥有数十

  • 我有一个Web窗体网站项目。本网站引用了4个类库项目。这些类库中有3个引用第三方程序集。对于3个类库项目中的每一个,我都得到以下编译器错误。 我已经在类库项目上尝试了所有可能的anycpu/x86/x64组合。我不能在网站项目上更改此内容。我有x86和x64版本的第三方DLL。两者都试过。 “ClassLibrary.csproj”(默认目标)(4)->(ResolveAssemblyRefere

  • 我有两个应用程序在同一台服务器上运行。一个是c应用程序,另一个是运行在vertx上的java web服务器。Web服务器希望向C部件发送请求并获得响应。ZeroMq似乎是一个执行进程间通信的解决方案。它是通往vertx的桥梁(https://github.com/dano/vertx-zeromq),但没有那么好的记录。 我想知道我认为这座桥能做些什么: C zeroMq socket type是

  • 本文向大家介绍hdfs的体系结构相关面试题,主要包含被问及hdfs的体系结构时的应答技巧和注意事项,需要的朋友参考一下 解答: hdfs有namenode、secondraynamenode、datanode组成。 为n+1模式 namenode负责管理datanode和记录元数据 secondraynamenode负责合并日志 datanode负责存储数据

  • 然后,我遇到了这篇文章/帖子旅使用MVC替代方案的经验,它描述了我目前正在做的事情。 在实际尝试在一个新的iOS项目上实现VIPER之后,我遇到了一些问题: 演示者可以在视图中查询信息吗?还是“信息传递”应该总是从视图开始?例如,如果视图触发了演示者中的某个操作,但根据通过该操作传递的参数,演示者可能需要更多信息。我的意思是:用户点击“donewithstate:”,如果state==“somet

  • 我正在读clean architecture的书,我想把它应用到我写的一些软件中。在该软件中,和等实体扮演着非常重要的角色。出于这个原因,为了避免重复,跨代码共享这些实体是有意义的,但这也违反了清洁体系结构的规则。 在这种情况下,什么是正确的决定?我应该在中添加一个“shared/entities”文件夹吗? 我正在做的项目主要是在flutter编程,如果这对答案很重要的话。