在Mac OS X 10.6.8上安装Pygame

15 投票
5 回答
25001 浏览
提问于 2025-04-17 07:05

我在使用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 个回答

0

我之前也遇到过同样的问题。我当时用的是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可以正常导入,没有报错了。

3

最后一行的提示是 no matching architecture in universal wrapper。这很可能是因为你在64位系统上使用了预编译的32位程序。

你可以尝试重新安装或者从头编译,但其实强制让Python以32位运行会简单得多。更多信息可以在这篇帖子中找到。

33

在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脚本应用,这样启动会更方便。

撰写回答