sudo: pip: command not found in CentOS

24

我使用的是CentOS,并且已经把pip安装在了/usr/local/python-dir/bin/pip。我创建了一个到/usr/local/bin/pip的链接。然后我执行了sudo pip install xxx,但是它报告了以下错误:

sudo: pip: command not found

我看到 $PATH 没问题:

/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin

然而,我只能以这种方式执行pip:

sudo /usr/local/bin/pip install xxx

我应该如何配置PATH或其他内容?非常感谢。


如果您不使用 sudo 运行它,链接是否有效?尽管您可能没有安装权限,但它是否会尝试以这种方式运行 pip - Eric Renouf
6个回答

57
为了安全起见,sudo 不依赖于您环境中设置的 $PATH。在 /etc/sudoers 中有一个 secure_path 选项,指定了 sudo 用于查找二进制文件的 PATH。例如:
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

只需将 /usr/local/bin 添加到该路径中,或习惯输入以下内容:

sudo `which pip` install xxx

1
我相信你必须使用visudo编辑文件: sudo visudo; 按插入键,向下滚动并进行更改,按esc键,然后输入“:qw”保存文件并退出。这对我有用。 - eezis
我更赞同 @Paul Kenjora 的答案, sudo ln -s /usr/local/bin/pip /usr/bin/pip - Pramit

11

不是理想的解决方案,但可以使用。在安装后,您始终可以取消链接以恢复安全性。

sudo ln -s /usr/local/bin/pip /bin/pip

将pip放在根路径的bin目录中。然后您就可以以sudo身份运行pip了。


4
尝试运行命令sudo bash -c 'echo $PATH',查看sudo寻找命令的位置;然后,您可以将pip符号链接到其中一个目录。

这是解决我的问题的另一种方法,我将 /usr/local/bin 添加到 secure_path 中,它也起作用了,谢谢。 - zimmer
8
这是我使用的方法:$ sudo ln -s /usr/local/bin/pip /usr/bin/pip - MikeiLL
@MikeiLL,谢谢。说句实话,在我的机器上我找到了usr/local/bin/pip3.4 - progfan

3

可以使用以下命令安装pip:

yum -y install python-pip

如果您遇到GPG密钥问题(没有这样的文件或目录),请触发以下命令:

rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6

然后尝试安装 pip

0

您可以在使用sudo命令时添加-E选项,以使用您的用户帐户的环境变量。

$ sudo -E pip install xyz

0
在我的系统上,我安装了miniconda;因此,我打开的任何终端最初都处于基本环境中。要全局安装pip包,我需要先“conda deactivate”退出基本环境。然后当我“pip install”一个包时,它可以被系统全局看到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接