web-dev-qa-db-ja.com

Python ubuntu 18.04およびubuntu 20.04のバージョンのあいまいさ

現在の混乱を理解できません。誰かがここで何が起こっているのか、どうすれば解決できるのか説明してください。 コマンドラインのスクリーンショット

$ 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 pythonscreenshot

$ 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にエイリアスしなかったのかを除いて、理にかなっているように見えますか?

1
Jenim Patel

pythonpython3.6にエイリアスしているため、pythonを呼び出すたびにPython3.6が呼び出されます。 which がエイリアスを表示しない理由は、whichPATHをスキャンして、引数の名前と一致する実行可能ファイルを探すためです。あなたの場合、whichは実際に/usr/bin/pythonの出力を提供していました。 whichのマンページ から:

これは、現在の環境で実行されるファイル(またはリンク)のパス名を返します。引数が厳密にPOSIX準拠のシェルでコマンドとして指定されている場合に使用します。 これは、引数の名前に一致する実行可能ファイルのPATHを検索することによってこれを行います。パス名を正規化しません。

0
Kulfy