我正在尝试以 root 身份运行 Pipenv python 实例。不以 root 身份运行时:
(myenv) $ python script.py
Pipenv python 使用正确。但是,当以 root 身份运行时sudo
:
(myenv) $ sudo python script.py
/usr/bin/python
而是使用系统默认的python at 。经过一番搜索,我找到了-E
sudo 的选项。然而,随着
(myenv) $ sudo -E python script.py
它仍然使用/usr/bin/python
,即使sudo -E echo $PATH
给出相同的echo $PATH
,所以该-E
选项工作正常;但是,sudo -E which python
继续给/usr/bin/python
!这不是权限或访问问题,因为 Pipenv python 的完整路径可以正常工作。即使$PATH
设置正确,为什么使用错误的二进制文件?
好的,这就是问题所在。当我进行故障排除时,我想在 sudo 中找到 $PATH 的值。但是,使用
sudo -E echo $PATH
,我的用户(非 sudo)shell 会自动扩展它,所以 sudo 刚刚看到尝试
sudo -E env
告诉我们真实的故事:所以其实
sudo -E
并没有通过$PATH
。要解决此问题,您可以在类似问题上看到此答案。基本上你只需添加到您的 sudoers 文件中
visudo
。