pipenv执行install命令遇权限拒绝:~/.local/share/virtualenvs无权限
解决pipenv权限错误(无需修改.local目录权限)
你的核心问题是pipenv默认要读写root所有的.local目录,而你不想修改该目录权限,下面是几个直接可行的方案:
方案1:在项目内创建虚拟环境(最推荐)
直接让pipenv把虚拟环境放在项目目录里,完全避开.local:
- 进入项目根目录,创建本地虚拟环境文件夹:
mkdir .venv - 设置环境变量让pipenv识别这个目录:
export PIPENV_VENV_IN_PROJECT=1 - 重新执行安装命令:
pipenv install --deploy --dev
这个方案的好处是虚拟环境和项目绑定,方便管理,也不会触碰系统级的.local目录。
方案2:指定自定义全局虚拟环境路径
如果想统一管理多个项目的虚拟环境,可指定一个当前用户有权限的目录:
- 先创建一个用户专属的虚拟环境存储目录:
mkdir -p /Users/XXX/my_pipenv_venvs - 设置环境变量指定pipenv使用这个路径:
export PIPENV_VENV_LOCATION=/Users/XXX/my_pipenv_venvs - 执行安装命令:
pipenv install --deploy --dev
如果想永久生效,把export PIPENV_VENV_LOCATION=/Users/XXX/my_pipenv_venvs添加到你的shell配置文件(比如~/.zshrc或~/.bashrc)里即可。
方案3:手动创建虚拟环境后让pipenv复用
先手动创建一个有权限的虚拟环境,再让pipenv直接使用它:
- 创建用户权限的虚拟环境:
python3 -m venv /Users/XXX/my_custom_venv - 让pipenv关联这个虚拟环境并安装依赖:
pipenv install --deploy --dev --venv /Users/XXX/my_custom_venv
为什么sudo创建virtualenvs没用?
即使你用sudo创建了virtualenvs文件夹,该文件夹的所有者还是root,当前普通用户没有读写权限,pipenv运行时依旧会触发权限错误,所以这个操作解决不了问题。
内容的提问来源于stack exchange,提问作者Joshua Sullivan
相关产品推荐
相关产品推荐

