2 つの Python インタープリターがインストールされています。
[user@localhost ~]$ /usr/bin/python -V && /usr/local/bin/python -V
Python 2.4.3
Python 2.7.6
Sudo はPATH
、実行するコマンドごとに次のように変更されます。
[user@localhost ~]$ env | grep PATH && sudo env | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/user/bin
PATH=/usr/bin:/bin
テスト スクリプトを実行します。
[user@localhost ~]$ cat what_python.py
#!/usr/bin/env python
import sys
print sys.executable
print sys.version
[user@localhost ~]$ sudo python what_python.py
/usr/bin/python
2.7.6 (default, Feb 27 2014, 17:05:07)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)]
で Python 2.4.3 へのパスを取得し、 でsys.executable
報告されているバージョン 2.7.6を取得しますsys.version
。明らかsys.executable
にsys.version
一致していません。sudo がどのように PATH を変更するかを考慮すると、 の値を理解できますsys.executable
。しかし、sys.version
バージョン 2.4.3 ではなく、バージョン 2.7.6 を報告usr/bin/python
するのはなぜsys.executable
ですか?
これは私の質問Sudo changes PATHのフォローアップですが、同じバイナリを実行します