在Mac OS X 10.6.8上安装Pygame
我在使用Python 2.7.2的时候,想要导入pygame库,但出现了这个错误信息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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
我不太明白这是什么意思。我是不是应该自己编译一下pygame呢?
5 个回答
我之前也遇到过同样的问题。我当时用的是Python 2.7.2,适用于OSX 10.6。以下是我解决这个问题的方法:
1) 我删除了当前的Python安装,包括应用程序文件夹里的和/Library/Frameworks/Python.framework里的(我只删除了2.7.2,3.2的版本留着没动)
2) 我重新安装了Python 2.7.2,选择了适用于OSX 10.3的版本(因为我的pygame安装文件是标记为适用于OSX 10.3的,所以我才这么做)
3) 我重新安装了pygame
现在pygame可以正常导入,没有报错了。
最后一行的提示是 no matching architecture in universal wrapper
。这很可能是因为你在64位系统上使用了预编译的32位程序。
你可以尝试重新安装或者从头编译,但其实强制让Python以32位运行会简单得多。更多信息可以在这篇帖子中找到。
在Mac OS上安装Python 2.7.3的时候,它会把64位和32位的程序都放在这个地方:
/Library/Frameworks/Python.framework/Versions/2.7/bin/
在这个文件夹里,有一个叫做 python2.7-32
的32位程序。
如果你想在终端使用它,只需要输入 $ python2.7-32
,而不是 python
。
如果你想在IDLE中使用它,可以把64位的 python2.7
改个名字,比如叫 python2.7-64
,然后把 python2.7-32
改成 python2.7
。下次你打开IDLE或终端的时候,它就会用32位的程序了。用完后记得再改回来。
你也可以通过终端强制以32位模式启动IDLE:
$ arch -i386 /Library/Frameworks/Python.framework/Versions/2.7/bin/idle2.7 -n
你还可以创建一个自动化的shell脚本应用,这样启动会更方便。