导入pygame时“通用包装器中没有匹配的架构”

Posted

技术标签:

【中文标题】导入pygame时“通用包装器中没有匹配的架构”【英文标题】:"no matching architecture in universal wrapper" when importing pygame 【发布时间】:2011-12-08 05:22:23 【问题描述】:

我在运行 Snow Leopard 10.6.8 和 Python 2.7.2 的 MacBook Pro 上。我去了pygame网站,下载并安装了所有需要的框架和程序,编译并安装了pygame,但我无法将模块导入python。我从 pygame 网站下载了一个示例程序,每次运行时都会出现此错误:

Traceback (most recent call last):
File "/Users/jesse/Downloads/PurpleMines/PurpleMines.py", line 3, in <module>
from pygame import *
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/__init__.py", line 95, in <module>
from pygame.base import *
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/base.so, 2): no suitable image found.  Did find:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/base.so: no matching architecture in universal wrapper

我猜这是与运行 64 位操作系统有关的问题?

提前感谢您的帮助。

【问题讨论】:

命令file /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/base.so 报告什么? /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/base.so: Mach-O universal binary with 2 architectures /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/base.so (for architecture ppc): Mach-O bundle ppc /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/base.so (for architecture i386): Mach-O bundle i386 您的版本似乎是旧版本——请编辑问题以包含您安装的版本、您自己编译的部分等详细信息。 我遇到了同样的错误,并从文件中获取了相同的值。我的版本是 Python 2.7.2 和 Pygame 1.9.1。两者都是可用的最新版本(不包括 Python 3.X)。 【参考方案1】:

删除旧的 pygame 安装并重新安装对我有用。 我正在运行 Mac OS 10.7

sudo rm -Rf /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame

然后从以下位置复制并安装pygame:

http://www.pygame.org/ftp/pygame-1.9.2pre-py2.7-macosx10.7.mpkg.zip

【讨论】:

我已经处理 pygame 依赖地狱好几个小时了——这马上就解决了。谢谢! 它确实有效,但是:我删除了整个 Python.framework 文件夹并执行了这些步骤,但它不起作用,所以不要这样做!只需删除确切的文件夹:site-packages - 仅此而已!【参考方案2】:

虽然上面说的 Sylvain 是正确的,但这个错误通常是由 python 和 pygame 之间的比特率差异引起的。重新下载它可能只会有帮助,因为您当时获得了正确的发行版。要告诉python的比特率,这样做:

import platform
platform.architecture()

如果是32位,获取pygame的32位发行版。否则,获取 64 位分布。

【讨论】:

以上是关于导入pygame时“通用包装器中没有匹配的架构”的主要内容,如果未能解决你的问题,请参考以下文章

FBSDKCoreKit.framework/FBSDKCoreKit:通用包装器中没有匹配的架构

@IBDesignable错误:无法更新自动布局状态

导入pygame没有名为'pygame'的模块[重复]

ImportError:没有名为“pygame”的模块

ImportError:没有名为“pygame”的模块

Pygame,无法导入声音