导入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时“通用包装器中没有匹配的架构”的主要内容,如果未能解决你的问题,请参考以下文章