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
最终问题迎刃而解。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论