現在の混乱を理解できません。誰かがここで何が起こっているのか、どうすれば解決できるのか説明してください。 コマンドラインのスクリーンショット
$ python --version
Python 3.6.5
$ which python
/usr/bin/python
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python -> python2.7
編集:コマンドの出力type -a python
、 screenshot
$ type -a python
python is aliased to 'python3.6'
python is /usr/bin/python
python is /home/jenim/anaconda3/bin/python
注:質問を投稿した後、ubuntu 20.04に更新し、以下のように変更しました。 screenshot
jenim : ~/Desktop
$ python --version
Python 3.6.5
jenim : ~/Desktop
$ which python
/usr/bin/python
jenim : ~/Desktop
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 7 Apr 15 16:15 /usr/bin/python -> python2
jenim : ~/Desktop
$ ls -l /usr/bin/python2
lrwxrwxrwx 1 root root 9 Mar 13 18:01 /usr/bin/python2 -> python2.7
jenim : ~/Desktop
$ ls -l /usr/bin/python2.7
-rwxr-xr-x 1 root root 3694632 Apr 7 17:35 /usr/bin/python2.7
Ubuntu 20.04に更新したので、システムにPython 2をまだ残しておくにはどうすればよいでしょうか。 ubuntu 20.04のリリースノートには、Python 2はサポートされなくなったと記載されています
編集2: Kulfy のコメントに従って、pythonがpython3.6にエイリアスされていました。だから私はエイリアスを削除しましたが、なぜwhich python
がpython3.6にエイリアスしなかったのかを除いて、理にかなっているように見えますか?
python
をpython3.6
にエイリアスしているため、python
を呼び出すたびにPython3.6が呼び出されます。 which
がエイリアスを表示しない理由は、which
がPATH
をスキャンして、引数の名前と一致する実行可能ファイルを探すためです。あなたの場合、which
は実際に/usr/bin/python
の出力を提供していました。 which
のマンページ から:
これは、現在の環境で実行されるファイル(またはリンク)のパス名を返します。引数が厳密にPOSIX準拠のシェルでコマンドとして指定されている場合に使用します。 これは、引数の名前に一致する実行可能ファイルのPATHを検索することによってこれを行います。パス名を正規化しません。