我在Mac OS X El Capitan上运行python 2.7.10。 我下载了pygame 1.9.1,它在Python的命令行版本上运行良好。但是,如果我在PyCharm上编写一个使用pygame库的程序,它会显示一条错误消息。
/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 /Users/jeff/PycharmProjects/Codeup/Solution.py
Traceback (most recent call last):
File "/Users/jeff/PycharmProjects/Codeup/Solution.py", line 1, in <module>
import pygame
File "/Library/Python/2.6/site-packages/pygame/__init__.py", line 95, in <module>
from pygame.base import *
ImportError: dlopen(/Library/Python/2.6/site-packages/pygame/base.so, 2): Library not loaded: @executable_path/../Frameworks/SDL.framework/Versions/A/SDL
Referenced from: /Library/Python/2.6/site-packages/pygame/base.so
Reason: unsafe use of @executable_path in /Library/Python/2.6/site-packages/pygame/base.so with restricted binary
我该如何解决这个问题?
答案 0 :(得分:1)
问题与El Capitan的新System Integrity Protection(SIP)有关。其中一个后果是子进程只有restricted access到其他资源,目的是使系统不那么容易受到攻击。这似乎适用于将python作为子进程运行的pycharm,而如果从命令行运行脚本则不会出现此问题。
肮脏的解决方案:Disable SIP。尽量避免这种情况。
正确的解决方案:维护两个单独的python安装 - 系统python(OS附带),以及另一个用于开发的python(dev-python)。后者你可以从python.org或通过自制软件获得。还要单独安装setuptools和pip,并确保/usr/local/bin
中的python-binaries链接到dev-python安装的正确对应项。我的dev-python安装位于/Library/Frameworks/Python.framework/
下。确保不同的python生态系统不会相互混淆。例如,我曾经遇到过一些python模块的构建系统能够发现我的dev-python,但后来链接到sys-python lib的问题,当我尝试导入python模块时会导致问题。
希望这会有所帮助。
答案 1 :(得分:0)
您好像没有SDL库或者有一些问题。 而且,你确定你使用的是Python 2.7.10吗?在路径中我看到2.6。