Я не могу понять, в какой каше я нахожусь, кто-нибудь, пожалуйста, объясните, что здесь происходит и как мне это решить?скриншот командной строки
$ 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
Edit:
Вывод команды type -a python
, скриншот
$ type -a python
python is aliased to 'python3.6'
python is /usr/bin/python
python is /home/jenim/anaconda3/bin/python
Примечание: Я обновился до ubuntu 20.04 после того, как опубликовал этот вопрос, и ситуация изменилась, как показано ниже, скриншот
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
Edit 2: Следуя комментарию Kulfy, я понял, что python был псевдонимом для python3.6. Поэтому я удалил псевдоним, и теперь все выглядит разумно, кроме того, почему который python
не псевдоним на python3.6 ?
Python3.6 вызывается всякий раз, когда вы вызываете python
, потому что вы псевдонимили python
на python3.6
. Причина, по которой , который
не видит псевдоним, заключается в том, что который
сканирует PATH
на наличие исполняемых файлов, соответствующих именам аргументов. В вашем случае , который
фактически давал выходные данные для /usr/bin/python
. Из , которая
manpage:
, которая возвращает пути файлов (или ссылок), которые будут выполняться в текущей среде, если бы ее аргументы были даны в виде команд в строго POSIX-совместимой оболочке. Это делается путем поиска исполняемых файлов, соответствующих именам аргументов, в PATH. Он не канонизирует имена путей.