You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20.04虚拟环境pip安装报[Errno13]权限拒绝错误

问题根因

报错中提到的zipp.py不存在属于正常现象:权限拒绝发生在pip尝试将缓存中的安装包写入site-packages目录的环节,文件尚未成功创建就被系统权限拦截,因此你在目录下找不到对应文件。
核心故障原因是虚拟环境目录归属权限配置错误:该虚拟环境位于/var/www路径下,大概率创建时误用了sudo执行创建命令,导致虚拟环境内目录与文件的所有者为root,当前登录的普通用户无目录写入权限,无法完成新包安装。

修复步骤
  • 执行deactivate退出当前已激活的虚拟环境,回到系统shell。
  • 递归修正整个虚拟环境目录的所有者,将权限交还给当前操作用户:
    sudo chown -R iamurray:iamurray /var/www/flask-prod/flask-prod-venv/
    

    针对Apache WSGI部署场景的提示:Apache默认运行用户为www-data,不需要将虚拟环境所有者修改为www-data,上述命令执行后默认保留的其他用户读、执行权限完全满足mod_wsgi的运行要求,将虚拟环境所有者设为服务运行用户会引入不必要的安全风险。

  • 重新激活虚拟环境,校验pip路径是否指向虚拟环境内部:
    source /var/www/flask-prod/flask-prod-venv/bin/activate
    which pip3
    
    正常返回路径应为/var/www/flask-prod/flask-prod-venv/bin/pip3,若返回系统路径(如/usr/bin/pip3)说明虚拟环境未正确激活。
  • 重新执行安装命令即可完成依赖安装:
    pip3 install flask
    
部署注意事项
  • 后续在虚拟环境内安装依赖时,禁止加sudo执行,否则新安装的文件所有者会变回root,再次触发同类权限报错。
  • 不要为了省事给site-packages目录设置777权限,过大的权限会允许任意用户写入执行代码,存在严重安全隐患,正确的所有者配置即可同时满足安装、运行需求。
  • 所有依赖安装完成后,可执行ls -l /var/www/flask-prod/flask-prod-venv/lib/python3.8/site-packages/校验文件归属,确认无root所有的包文件即可。

内容的提问来源于stack exchange,提问作者Ian Murray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:51:28