[英]sudo: python: command not found
我想讓sudo python
找到 Python 3。
我有一個奇怪的問題,在終端中,鍵入python --version
給出了 3.6,但是sudo python --version
給出了 2.7。 在嘗試了幾件事之后,我終於用sudo apt-get purge python2*
卸載了 2.7。 這正確地刪除了所有內容。 盡管如此,我還是無法讓sudo python
找到 Python 3。
我嘗試將/root/.bashrc
更改為:
export PATH="/home/username/anaconda3/bin:$PATH"
和
alias python="/home/username/anaconda3/bin/python"
我也把相同的行放在~/.bashrc
中。
我的etc/sudoers
有這一行:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"/usr/bin:$
我打開了新終端,甚至重新啟動了計算機。 任何想法如何讓sudo python
只找到 Python 3? 我不想要單個會話修復,而是每次使用終端時都會起作用的東西。
謝謝
您的/etc/sudoers
被明確配置為使用已知的安全路徑覆蓋您的用戶路徑。
也就是說,如果您想始終通過用戶的 PATH 路徑,您可以輕松地使用將執行此操作的函數覆蓋sudo
(安裝在您的~/.bashrc
或類似文件中以使其持久化):
psudo() { sudo env PATH="$PATH" "$@"; }
此后, psudo python
將使用在 PATH 中找到的相同python
解釋器。
如果您真的想覆蓋sudo
命令本身,那也是可行的:
sudo() { command sudo env PATH="$PATH" "$@"; }
內置command
可防止函數遞歸(調用自身)。
如果你不想修改你的 bashrc,你總是可以這樣做: sudo env "PATH=$PATH" python something
當我看到這篇文章時,我只是想跑:
python -m spylon_kernel install
當我運行上面的命令時,我收到一條消息,告訴我除了輸入的內容之外還要使用sudo
,例如
sudo python -m spylon_kernel install
當我這樣做時,我從控制台收到了“ sudo: python: command not found ”消息,並添加了--user例如:
python -m spylon_kernel install --user
足以完成它。
請注意,我沒有在最后一個命令中使用
sudo
命令。
如果已經安裝了 python 3.x,請嘗試以下代碼
sudo python3
接受的答案建議設置函數來復制或替換sudo
,新的 Linux 用戶可能會覺得語法很復雜。
有一個更簡單的方法......
用戶有 miniconda3 python 環境:
(base) user@machine:~/$ which python
/home/user/miniconda3/bin/python
(base) user@machine:~/$ python --version
Python 3.9.12
sudo
看不到 python:
(base) user@machine:~/$ sudo which python
(base) user@machine:~/$ sudo python --version
sudo: python: command not found
只需使用“which python”代替“python”::
(base) user@machine:~/$ sudo `which python` --version
Python 3.9.12
這允許 shell 解釋器在sudo
命令中用“/home/user/miniconda3/bin/python”替換“python”。
或者,設置一個環境變量,比如PY
始終代替python
使用——這具有可在 shell 腳本中使用的優點:
(base) user@machine:~/$ export PY=`which python`
(base) user@machine:~/$ $PY --version
Python 3.9.12
(base) user@machine:~/$ sudo $PY --version
Python 3.9.12
注意:帶有--preserve-env=PATH
的sudo
很有吸引力,但不起作用,因為sudo
使用/etc/sudoers
中的secure_path
來查找可執行文件,而不是$PATH。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.