有人问过类似的问题here,但没有得到答案。
我有Python 2.7.11,OSX 10.11和pygame 1.9.1。每次运行程序时,窗口都会出现,然后关闭并显示错误“Segmentation fault:11”。我从pygame教程中得到了这个,然后稍微修改它以防止无限循环。 (即使我使用教程中使用的“while 1”循环,也会出现相同的错误。)
为什么会发生这种情况,我该如何解决?谢谢!
import sys, pygame
pygame.init()
size = width,height = 320,240
speed = [2,2]
black = 0,0,0
screen = pygame.display.set_mode(size)
ball = pygame.image.load("ball.gif")
ballrect = ball.get_rect()
for i in range(100):
ballrect = ballrect.move(speed)
if ballrect.left < 1 or ballrect.right > width - 1:
speed[0] = -speed[0]
if ballrect.top < 1 or ballrect.bottom > height - 1:
speed[1] = -speed[1]
screen.fill(black)
screen.blit(ball,ballrect)
pygame.display.flip()
答案 0 :(得分:1)
经过一些研究,当解释器以交互模式运行时,它似乎是一个已知的问题。我找到了一个可能有帮助的官方python补丁。要使用它,请在Terminal.app(或其他shell)中打开终端会话,然后输入:
curl -O http://bugs.python.org/file32324/patch_readline_issue_18458.sh
openssl sha1 patch_readline_issue_18458.sh
# the digest should be 7cb0ff57820a027dd4ca242eb2418930f8f46b4c
然后
sh ./patch_readline_issue_18458.sh
提示时输入密码! 让我知道这是否有效!
答案 1 :(得分:1)
为了防止其他人遇到同样的问题,我想出来了。它崩溃是因为OS X 10.11附带的SDL1有点坏了。
解决方案是从here下载运行时库SDL1。下载后打开dmg,将SDL.framework文件从中移动到/ Library / Frameworks中。由于那里已经有一个,我合并了两个,但替换也应该工作。 Pygame现在有效!