2015-12-20 70 views
0

我在Mac OS X El Capitan上运行python 2.7.10。 我下载了pygame 1.9.1,它在Python的命令行版本上工作正常。但是,如果我编写一个在PyCharm上使用pygame库的程序,它会显示这样的错误消息。无法在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

看起来你没有SDL库或者有一些问题。 而且,你确定你使用Python 2.7.10吗?在路径中我看到2.6。

0

问题与El Capitan的新System Integrity Protection(SIP)有关。其中一个后果是进程只有restricted access其他资源的目标是使系统更弱。这似乎适用于将python作为子进程运行的pycharm,而如果从命令行运行脚本,则不会出现此问题。

肮脏的解决方案Disable SIP。尽量避免这种情况。

适当的解决方案:维护python的两个独立安装 - 系统python(随OS提供)和另一个用于开发(dev-python)的python。后者你可以从python.org或通过自制软件获得。还要分别安装setuptools和pip,并确保/usr/local/bin中的python二进制文件链接到dev-python安装的正确对应文件。我的dev-python安装驻留在例如/Library/Frameworks/Python.framework/下。确保不同的python生态系统不会相互混淆。例如,我曾经遇到过一些python模块的构建系统能够发现我的dev-python的问题,但后来又链接到了一个sys-python库,这导致了当我尝试导入python模块时出现问题。

希望这有助于。