分段错误:11当我运行Pygame时

时间:2016-04-15 00:51:39

标签: python macos python-2.7 pygame

有人问过类似的问题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()

2 个答案:

答案 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现在有效!