安装virtualenv遇OSError权限拒绝错误,求解决方案
解决virtualenv创建环境时的Permission Denied错误
嘿,我来帮你排查这个权限问题!先还原下你遇到的场景:
你执行的命令是:
dhcp-18-41:WakeUp6 jbs$ sudo -H virtualenv -p /usr/local/Cellar/python@2/2.7.15 env
输入密码后触发的核心报错是:
OSError: [Errno 13] Permission denied
我整理了几个可能的原因和对应的解决步骤,你可以逐个试试:
1. 检查当前工作目录的权限
虽然你用了sudo -H切换到root环境,但如果当前的WakeUp6目录权限设置得比较严格,root也可能没法写入。先看看目录的权限情况:
ls -ld .
如果目录所有者不是root,或者没有开放写入权限,可以先切换到root用户再执行命令:
sudo su - cd /你当前的WakeUp6目录路径 virtualenv -p /usr/local/Cellar/python@2/2.7.15 env
或者直接修改当前目录的所有者为root:
sudo chown root:wheel .
改完后再重新执行你原来的virtualenv命令试试。
2. 确认Python解释器路径的权限
有时候Homebrew安装的Python目录权限可能有问题,导致root无法读取。先检查路径权限:
ls -ld /usr/local/Cellar/python@2/2.7.15 ls -l /usr/local/Cellar/python@2/2.7.15/bin/python2.7
如果权限偏严格,可以放开目录的读取和执行权限:
sudo chmod -R 755 /usr/local/Cellar/python@2/2.7.15
3. 重新安装virtualenv到目标Python环境
你当前用的virtualenv是装在系统Python的/Library/Python/2.7/site-packages目录下,可能权限混乱了。可以先卸载旧的virtualenv,然后用Homebrew的Python2.7自带的pip重新安装:
sudo pip uninstall virtualenv /usr/local/Cellar/python@2/2.7.15/bin/pip install virtualenv
之后用这个新安装的virtualenv路径来创建环境:
sudo -H /usr/local/Cellar/python@2/2.7.15/bin/virtualenv -p /usr/local/Cellar/python@2/2.7.15/bin/python2.7 env
4. 尝试不用sudo,改用用户级虚拟环境
如果上面的方法都不行,其实可以考虑不用sudo,直接在用户权限下创建虚拟环境。先确保你对当前目录有写入权限,然后用Homebrew的Python2.7的pip安装virtualenv到用户目录:
/usr/local/Cellar/python@2/2.7.15/bin/pip install --user virtualenv
然后执行:
~/.local/bin/virtualenv -p /usr/local/Cellar/python@2/2.7.15/bin/python2.7 env
这样就避开了root权限的问题,也更安全。
内容的提问来源于stack exchange,提问作者Brian Barcelona
相关产品推荐
相关产品推荐

