Я не вполне понимаю очевидного разногласия в версиях между различными пакетами Python 2 и интерпретатором Python 2 в моей системе Ubuntu 16.04.
Выполнение
$ readlink -e $(which python python2)
/usr/bin/python2.7
/usr/bin/python2.7
$ python --version && python2 --version
Python 2.7.12
Python 2.7.12
говорит мне это python
и python2
symlinked к python2.7
и версия интерпретатора Python 2 в моей системе Python 2.7.12
. Пока неплохо, ничто удивление.
Выполнение
$ dpkg -s python | grep Version
Version: 2.7.11-1
говорит мне что версия python
пакет 2.7.11-1
, который не соглашается с версией интерпретатора Python 2.
С другой стороны, выполнение
$ dpkg -s python2.7 | grep Version
Version: 2.7.12-1~16.04
говорит мне что версия python2.7
пакет 2.7.12
, который соглашается с версией интерпретатора Python 2.
Учитывая, что версия интерпретатора Python 2 2.7.12
, интерпретатор, затем обеспеченный только python2.7
пакет? Если так, что делает python
пакет делает, если он не обеспечивает интерпретатор, который в настоящее время использует система?
Интерпретатор /usr/bin/python2.7
обеспечивается python2.7-minimal
пакет, как Вы видите с apt-file search /usr/bin/python2.7
. python
пакет - то, что называют метапакет : потому что установка Python разделяется между несколькими пакетами, python
, пакет обеспечивает простой способ установить все те пакеты сразу. Если кому-то нужен только абсолютный минимум, они могут установить только python2.7-minimal
пакет.
По умолчанию у Вас есть много версий установленного Python. Если бы программа потребовала определенной версии, то автор обратился бы к той версии путем.
Если у Вас нет требуемой версии автора, Вы могли бы установить ту определенную версию. Можно все еще поддержать выбор версии по умолчанию который /usr/bin/python
символьный связанный с номер версии. В Вашем случае это, скорее всего, связано с /usr/bin/python2.7
.
Можно просмотреть установленные версии с:
$ ls -ld /usr/bin/python*
Мой ответ главным образом обращается к последней части Вашего вопроса, If so, what does the python package do if it doesn't provide the interpreter that the system currently uses?
.
Когда Вы работаете python
это ищет Ваш путь и открытие /usr/bin/python
, который связан с /usr/bin/python
. Таким образом, Вы на самом деле проверяете версию /usr/bin/python2.7
.
Кроме того, в случаях существуют несоответствия в выводе версии в зависимости от проверенного метода. Как в этом случае, проверяя с помощью фактической программы и проверяя через упаковку распределения. Когда это происходит, штамп версии в фактической программе был бы наиболее вероятным быть более точным.
Другой способ проверить фактическую версию интерпретатора Python путем выполнения его от командной строки:
$ python
Вывод:
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ python2.7
Вывод:
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>