Яку версію Python у мене є?


73

Як я можу дізнатися, які у мене версії Python?

Я використовую Ubuntu 14.04 (Trusty Tahr).


4
Крім того , швидкий спосіб побачити , що пітон бінарні файли встановлюються в:ls /usr/bin | grep python
Tejas Kale

1
@TejasKale Краще запустити ls /usr/bin/python*(або ls /usr/bin/*python*якщо ви дійсно хочете файли з python будь-якого місця в назві). Таким чином, він lsвсе ще форматує свій вихід для терміналу (і ви отримуєте кілька стовпців і, з lsпсевдонімом Ubuntu за замовчуванням , колоризацією).
Eliah Kagan

Відповіді:


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

2
@Anthony -VПрапор для версії залежить від регістру. python -vпомістити вас у консоль Python із включеними багатослівними повідомленнями. Контроль + D, щоб вийти. Або напишіть exit()і натисніть return.
Олі

@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, залежно від того, як вони виконуються, лінія хешбанга може бути використана для визначення того, який 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')

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

Думаю, це повинна бути відповідь.
Соломон Вімал

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і тепер, здається, я перебуваю в програмі, з якої я поняття не маю, як вийти, не кажучи вже про видалення ?? ви можете мені тут допомогти
BugWhisperer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.