我正在尝试运行如下 python3 安装:
pip3 install django
我收到错误:
PermissionError:[Errno 13] 权限被拒绝:'/usr/local/lib/python3.6/site-packages/pytz'
然后我尝试:
sudo pip3 install django
我收到错误:
sudo:pip3:未找到命令
以下是我的 $PATH 的样子:
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
我如何获得 pip3 的 sudo 访问权限?
答案1
出于安全原因,Sudo 不会使用PATH
与当前用户相同的用户。有/etc/sudoers
一个选项secure_path
它指定使用 sudo 运行命令时使用的路径。我的路径如下:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
来自 sudo 手册页:
secure_path Path used for every command run from sudo. If you don't trust the people running sudo to have a sane PATH environment variable you may want to use this. Another use is if you want to have the “root path” be separate from the “user path”. Users in the group specified by the exempt_group option are not affected by secure_path. This option is not set by default.
该pip3
命令可能不在文件定义的路径中sudoers
。您可以将路径添加到secure_path
或者提供命令的完整路径,pip3
如下所示:
sudo /path/to/pip3 install django
答案2
sudo 可能不会在使用时保留您的 $PATH 变量。请尝试在命令中使用 pip3 二进制文件的完整路径,例如:sudo /path/to/pip3 install django
。如果您不确定完整路径,请执行which pip3
。
答案3
答案4
我通过以下方式发布了 django 安装:
pip3 install --user django
这解决了问题。