Несоизмеримость в версиях пакетов Python 2 и интерпретатора Python 2

Я не вполне понимаю очевидного разногласия в версиях между различными пакетами 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 пакет делает, если он не обеспечивает интерпретатор, который в настоящее время использует система?

3
задан 17 September 2016 в 05:21

2 ответа

Интерпретатор /usr/bin/python2.7 обеспечивается python2.7-minimal пакет, как Вы видите с apt-file search /usr/bin/python2.7. python пакет - то, что называют метапакет : потому что установка Python разделяется между несколькими пакетами, python, пакет обеспечивает простой способ установить все те пакеты сразу. Если кому-то нужен только абсолютный минимум, они могут установить только python2.7-minimal пакет.

4
ответ дан 1 December 2019 в 15:35

По умолчанию у Вас есть много версий установленного 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.
>>>
1
ответ дан 1 December 2019 в 15:35

Другие вопросы по тегам:

Похожие вопросы: