2015-12-20 144 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模塊時出現問題。

希望這有助於。