1. 程式人生 > >解決mac osx下pip安裝ipython權限的問題

解決mac osx下pip安裝ipython權限的問題

模式 xtra 問題 marker sudo protect ras mac oot

1 pip install ipython --user -U

下面是pip install gevent的錯誤提示, 又是 Operation not permitted …

1 2 3 4 5 #xiaorui.cc pip install gevent ... raise Error, errors Error: [(‘/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py‘, ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py‘, "[Errno 1] Operation not permitted: ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py‘"), (‘/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc‘, ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc‘, "[Errno 1] Operation not permitted: ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc‘"), (‘/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py‘, ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py‘, "[Errno 1] Operation not permitted: ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py‘"), (‘/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc‘, ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc‘, "[Errno 1] Operation not permitted: ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc‘"), (‘/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib‘, ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib‘, "[Errno 1] Operation not permitted: ‘/tmp/pip-jlyjj9-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib‘")]

其實權限問題… OSError: [Errno 1] Operation not permitted , 各種的root都不可以,想到了一個粗暴的方式,直接針對share進行chmod的授權。 結果… 提示root也是沒有權限操作系統的目錄。 我突然發覺肯定是新版的osx有了某種機制制止我們直接的修改/System文檔數據。

google了後,發現果然如我的所料…. 新系統有個叫sip的機制。 你暫時不能直接在終端進行 csrutil disable 會出現錯誤提示,引導你去mac osx的恢復模式進行操作。

由於El Capitan引入了SIP機制(System Integrity Protection),默認下系統啟用SIP系統完整性保護機制,無論是對於硬盤還是運行時的進程限制對系統目錄的寫操作。 這也是我們安裝ipython失敗的原因….

現在的解決辦法是取消SIP機制,具體做法是:

重啟電腦,按住Command+R(直到出現蘋果標誌)進入Recovery Mode(恢復模式)
左上角菜單裏找到實用工具 -> 終端
輸入csrutil disable回車
重啟Mac即可
如果想重新啟動SIP機制重復上述步驟改用csrutil enable即可

我們現在再看看sip的狀態, 這樣再安裝ipython、gevent再也不會提示無法寫入的權限提示了/

1 2 $ csrutil status System Integrity Protection status: disabled.

如果在mac下碰到OSError: [Errno 1] Operation not permitted:的問題,就算用sudo 也無法解決,那肯定是sip在作怪了.

胡陽大哥給出一個優雅的方案,大家可以使用下. 基於用戶的權限來安裝模塊包顯得更加合理。

1 pip install ipython --user -U

解決mac osx下pip安裝ipython權限的問題