1. 程式人生 > >OS X El-Capitan 安裝 virtualenvwrapper 遇到 Operation not permitted

OS X El-Capitan 安裝 virtualenvwrapper 遇到 Operation not permitted

事情是這樣的,在安裝完virtualenv後,想配合virtualenvwrapper使用,於是直接是pip安裝:

$ pip install virtualenvwrapper

於是抱了一錯誤,說是沒有許可權,那麼加上sudo後執行:

$ sudo pip install virtualenvwrapper

發現還是有問題,仔細一看堆疊資訊:

Collecting six>=1.9.0 (from stevedore->virtualenvwrapper)
  Downloading http://pypi.douban.com/packages/py2.py3/s/six/six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six, stevedore, virtualenvwrapper
  Found existing installation: six 1.4.1
    DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling six-1.4.1:
Exception:
Traceback (most recent call last):

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
    os.chflags(dst, st.st_flags)
OSError: [Errno 1] Operation not permitted: '/tmp/pip-nGVqhl-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'

virtualenvwrapper需要依賴six,在安裝six的時候發現系統已經有一個six-1.4.1,但是virtualenvwrapper需要six-1.9.0,於是想先解除安裝老版本的six,此時問題來了,發現沒有許可權解除安裝,此時我就納悶,加上sudo,還是沒許可權。於是Google之,最終還是在萬能的GitHub找到答案。系統用的是OS X El-Capitan版本,six-1.4.1是系統內建的packages,因系統整合保護你是沒有許可權去修改/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info目錄的。因此在安裝virtualenvwrapper的時候需要選擇忽略six的安裝:

sudo pip install virtualenvwrapper --upgrade --ignore-installed six

最終問題迎刃而解。

如果還是不行就是 SIP的問題了,這個時候要關閉 SIP。首先重啟系統,在開機聲音響起的同時按住 Command + R 鍵,當出現蘋果 Logo 黑白畫面的時候鬆開鍵盤,進入恢復模式的操作面板,然後開啟「終端」,輸入:

csrutil disable

執行命令後重啟系統,這時就可以安裝了。


關注公眾號「Python之禪」(id:vttalk)獲取最新文章 python之禪