Какая версия Python у меня есть?

73

Как я могу узнать, какие версии Python у меня есть?

Я использую Ubuntu 14.04 (Trusty Tahr).

TechJhola
источник
4
Кроме того , быстрый способ увидеть , что питон бинарные файлы устанавливаются в:ls /usr/bin | grep python
Tejas Kale
1
@TejasKale Лучше запустить ls /usr/bin/python*(или, ls /usr/bin/*python*если вы действительно хотите, чтобы файлы были python где-то в имени). Таким образом, по- lsпрежнему форматируется его вывод для терминала (и вы получаете несколько столбцов и, с lsпсевдонимом по умолчанию в Ubuntu, раскрашивание).
Элия ​​Каган

Ответы:

86

Вы можете использовать python -V(и др.), Чтобы показать вам версию Python, к которой относится pythonкоманда. Если это все, что вам нужно, все готово. Но чтобы увидеть каждую версию python в вашей системе, нужно немного больше.

В Ubuntu мы можем проверить разрешение с помощью readlink -f $(which python). В случаях по умолчанию в 14.04 это будет просто указывать /usr/bin/python2.7.

Мы можем связать это, чтобы показать версию этой версии Python:

$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/usr/bin/python2.7: Python 2.7.6

Но это все еще только говорит нам, каково наше текущее pythonрешение. Если бы мы работали в Virtualenv (общая система управления стеками Python), мы pythonмогли бы перейти на другую версию:

$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/home/oli/venv/bin/python: Python 2.7.4

Это реальный результат.

Дело в том, что вокруг вашей системы могут быть скрыты сотни различных версий Python, либо по путям, которые добавлены в контекст, либо живут под разными двоичными именами (например python3).

Если мы предполагаем, что двоичный файл Python всегда будет вызываться python<something>и будет двоичным файлом, мы можем просто выполнить поиск по всей системе файлов, соответствующих этим критериям:

$ sudo find / -type f -executable -iname 'python*' -exec file -i '{}' \; | awk -F: '/x-executable; charset=binary/ {print $1}' | xargs readlink -f | sort -u | xargs -I % sh -c 'echo -n "%: "; % -V'
/home/oli/venv/bin/python: Python 2.7.4
/media/ned/websites/venvold/bin/python: Python 2.7.4
/srv/chroot/precise_i386/usr/bin/python2.7: Python 2.7.3
/srv/chroot/trusty_i386/usr/bin/python2.7: Python 2.7.6
/srv/chroot/trusty_i386/usr/bin/python3.4: Python 3.4.0
/srv/chroot/trusty_i386/usr/bin/python3.4m: Python 3.4.0
/usr/bin/python2.7: Python 2.7.6
/usr/bin/python2.7-dbg: Python 2.7.6
/usr/bin/python3.4: Python 3.4.0
/usr/bin/python3.4dm: Python 3.4.0
/usr/bin/python3.4m: Python 3.4.0
/web/venvold/bin/python: Python 2.7.4

Это, очевидно, довольно отвратительная команда, но это опять-таки реальный результат, и, похоже, он проделал довольно тщательную работу.

Оли
источник
Я получаю следующее, и я не уверен, что это значит: readlink: extra operand '/usr/bin/python2.7' Try 'readlink --help' for more information.
hello_there_andy
Я предполагал, python -vчто вернет версию и выполнил это как root. он распечатал длинный список вещей, но наверху он сказал, installing zipimport hookи теперь кажется, что я нахожусь в программе, из которой я не знаю, как выйти, не говоря уже об удалении ?? Вы можете помочь мне здесь
PrimitiveNom
2
@Anthony -VФлаг для версии чувствителен к регистру. python -vпоместите вас в консоль Python с включенными подробными сообщениями. Control + D, чтобы выйти. Или напишите exit()и нажмите возврат.
Оли
@hello_there_andy Полагаю, вы сделали опечатку, когда скопировали команду.
wjandrea
63

Введите следующее в терминале ( Ctrl+ Alt+ T):

python -V

или же

python --version

Вы можете найти список опций / параметров для многих команд в терминале, набрав команду, после чего --help

Пример:

python --help

Руководство / страницы справочника также доступны для большинства таких CLI , которые могут быть отображены man <command>(Ex: man python)

От man python:

COMMAND LINE OPTIONS
        -V ,  --version
              Prints the Python version number of the executable and exits.

Там же python3установлено на многих машинах, так что вы можете сделать:

python3 --version

чтобы узнать, какой Python 3.x вы используете.

ненадежный
источник
2
Стоит отметить, что @Florian Diesch ниже намекает на то, что у вас, вероятно, есть несколько версий «python». Вызов «python» по умолчанию указывает на установку Python 2.7, хотя Ubuntu 14.04 также поставляется с Python 3.0.
Митч
32
python --version

а также

python2 --version

показать версию Python 2.x,

python3 --version

установленная версия Python 3.x

Флориан Диш
источник
8

Когда вы запустите pythonв терминале, он выдаст такой результат:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Смотрите первую строку Python 2.7.6.

Также беги python3. У меня 3.4.1

Python 3.4.1 (default, Jul 31 2014, 12:46:17) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Однако это не покажет их всех. Если у вас есть 2 или более версий Python 3.Xx, вы увидите только самую последнюю версию.

По умолчанию 14.04 у вас есть 2.7.6 и 3.4.0. Как видите, я обновился до 3.4.1. Я знаю, что у меня все еще есть 3.4.0, потому что, когда я иду в, /usr/binя вижу python3.4, и если я бегу /usr/bin/python3.4в командной строке, я получаю 3.4.0, и при запуске /usr/local/bin/python3.4дает мне 3.4.1

Мои местоимения Он / Он

Тим
источник
«Если у вас есть 2 или более версий Python 3.Xx, вы увидите только самую последнюю версию». Вместо этого он покажет, какой каталог содержит первый содержащий каталог в PATHпеременной среды? Почему при запуске python3всегда запускается самая высокая (под) версия установленного python3? Или на практике не будет отображаться какая-либо версия, на которую /usr/bin/python3указывает символическая ссылка, которая не обязательно должна быть самой последней?
Элия ​​Каган,
@Eliah Не знаю, но некоторые программы берут это оттуда, а другие - от /usr/binодного ...
Тим
2
Ну, когда дело доходит до фактического запуска программ на python, в зависимости от того, как они выполняются, строка hashbang может использоваться для определения того, какой python выступает в качестве интерпретатора ( подробности ; также обратите внимание на использование envстрок в hashbang для нахождения того, что интерпретируется как системный -preferred в общем в сценариях Python ). Я не уверен, что вы имеете в виду различия между некоторыми программами и другими.
Элия ​​Каган
Нет, пользователь сказал, что в режиме ожидания запущен с 3.4.0 и командной строки с 3.4.1 ...
Тим
5

Вы также можете проверить версию Python из самого кода, используя platformмодуль из стандартной библиотеки. Есть две функции: platform.python_version()(возвращает строку) и platform.python_version_tuple()(возвращает кортеж). Автор сценария:

import platform

print(platform.python_version())
print(platform.python_version_tuple())

Бег:

$ python test.py 
3.4.1
('3', '4', '1')
$ python2.7 test.py 
2.7.8
('2', '7', '8')
Nykakin
источник
3
Я думаю, что чаще используется sys.versionили sys.version_info.
Мэтт Нордхофф
5

Если вы хотите, чтобы все версии Python были доступны в виде команд, запустите compgen -c python. Например:

$ compgen -c python
python2.7
python3.4m
python3.4
python3m
python
python3
python2

Если вы хотите получить версию каждого из вышеперечисленных, вот одна строка:

$ for p in $(compgen -c python); do printf "%-16s" $p; $p --version; done
python2.7      Python 2.7.6
python3.4m     Python 3.4.3
python3.4      Python 3.4.3
python3m       Python 3.4.3
python         Python 2.7.6
python3        Python 3.4.3
python2        Python 2.7.6

Обновить: python*-config

Я заметил, что python*-configпрограммы не поддерживают --versionфлаг. Например:

$ python3-config --version
Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir

Таким образом, вы можете отфильтровать их grep -v, например:

compgen -c python | grep -v -- '-config$'
wjandrea
источник
Это должно быть лучшим ответом, я думаю.
Соломон Вимал
2

Легко откройте терминал и сделайте следующее:

Написать

python

проверить версию 2.x В моем случае это будет выглядеть так:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

Для 3.x напишите:

python3

В моем случае это выглядит так:

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.

В обоих случаях, чтобы выйти из оболочки Python, напишите:

 exit()
Уилмингтон
источник
1
  • В оболочке терминала

    $ which -a pythonперечисляет все ваши python.

    $ which -a python2.7перечисляет все ваши python2.7.

    $ /usr/bin/python -Vдает информацию о версии /usr/bin/python.

  • проверить в скрипте Python

Вот иллюстрация в оболочке ipython:

In [1]: import sys

In [2]: sys.version
2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Dec  6 2015, 18:08:32) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

In [3]: sys.version_info
sys.version_info(major=2, minor=7, micro=11, releaselevel='final', serial=0)

In [4]: sys.version_info >= (2,7)
Out[4]: True

In [5]: sys.version_info >= (3,)
Out[5]: False
подветренный
источник
Я предполагал, python -vчто вернет версию и выполнил это как root. он распечатал длинный список вещей, но наверху он сказал, installing zipimport hookи теперь кажется, что я нахожусь в программе, из которой я не знаю, как выйти, не говоря уже об удалении ?? Вы можете помочь мне здесь
PrimitiveNom