我现在一直在为AGES使用pygame,从来没有像这样引发错误。
Traceback (most recent call last):
File "dodgeball.py", line 1, in <module>
import pygame
File "/Library/Python/2.7/site-packages/pygame/__init__.py", line 95, in <module>
from pygame.base import *
ImportError: dlopen(/Library/Python/2.7/site-packages/pygame/base.so, 2): Library not loaded:
@executable_path/../Frameworks/SDL.framework/Versions/A/SDL
Referenced from: /Library/Python/2.7/site-packages/pygame/base.so
Reason: unsafe use of @executable_path in /Library/Python/2.7/site-packages/pygame/base.so with restricted binary
我被告知问题是多个SDL库,但我找不到任何重复的SDL库。
答案 0 :(得分:5)
Apple已经引入了系统完整性保护,作为开发人员,我们可能需要禁用它。
csrutil disable
并按Enter键。所有功劳都归于:)&gt;&gt; https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-max-os-x-el
答案 1 :(得分:2)
解决此问题的一种方法是禁用系统完整性保护,正如Amey所说,但更好的解决方法可能是在/usr/local/bin/python
而不是/usr/bin/python
重新安装python。
要执行此操作,您可以运行brew install python
(这应该在/usr/local/bin
中安装python并将PATH
更改为/usr/local/bin
(/usr/bin
之前)。在我的.zshrc
中(.bashrc
export PATH=/usr/local/bin:$HOME/bin:$PATH
系统完整性保护不会将/usr/local
标记为受限制,因此pygame不应再是受限制的二进制文件。