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

By 刘志军 , 2015-11-25, 分类: PYTHON技术

python

事情是这样的,在安装完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

执行命令后重启系统,这时就可以安装了。

参考:https://github.com/pypa/pip/issues/3165


关注公众号「Python之禅」,回复「1024」免费获取Python资源

python之禅

猜你喜欢

2024-03-04
Python中的 if __name__ == '__main__' 是什么?
2024-03-04
用 Python 破解隔壁老王家的 Wi-Fi 密码,刺激!
2023-06-12
Python3.12新特性
2023-04-17
Python虚拟环境使用
2023-04-15
如何删除macOS系统默认的Python2.7并替换成最新版python3.11
2022-12-09
python 中return和yield有什么区别
2022-08-17
如何利用多态干掉 if else 语句
2022-07-22
10个python初学者常犯的错误
2022-06-10
flask-siwadoc 支持openapi 分组功能
2022-06-10
在Python应用中Telegram 机器人搭建消息提醒