Versi Python apa yang saya miliki?

73

Bagaimana saya bisa mengetahui versi Python yang saya miliki?

Saya menggunakan Ubuntu 14.04 (Trusty Tahr).

TechJhola
sumber
4
Juga, cara cepat untuk melihat biner python apa yang diinstal adalah:ls /usr/bin | grep python
Tejas Kale
1
@TejasKale Lebih baik untuk menjalankan ls /usr/bin/python*(atau ls /usr/bin/*python*jika Anda benar-benar ingin file dengan python mana saja dalam nama). Dengan begitu, lsmasih memformat outputnya untuk terminal (dan Anda mendapatkan beberapa kolom dan, dengan lsalias default di Ubuntu, pewarnaan).
Eliah Kagan

Jawaban:

86

Anda bisa menggunakan python -V(et al.) Untuk menunjukkan kepada Anda versi Python yang diputuskan oleh pythonperintah. Jika itu yang Anda butuhkan, Anda sudah selesai. Tetapi untuk melihat setiap versi python di sistem Anda dibutuhkan lebih banyak.

Di Ubuntu kita dapat memeriksa resolusi dengan readlink -f $(which python). Dalam kasus default dalam 14,04 ini hanya akan menunjuk ke /usr/bin/python2.7.

Kami dapat menghubungkan ini untuk menunjukkan versi Python versi itu:

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

Tapi ini masih hanya memberi tahu kami apa pythonresolusi kami saat ini. Jika kami berada di Virtualenv (sistem manajemen tumpukan Python umum) pythonmungkin menyelesaikan ke versi yang berbeda:

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

Ini adalah hasil nyata.

Faktanya adalah mungkin ada ratusan versi berbeda dari Python yang disekresikan di sekitar sistem Anda, baik di jalur yang ditambahkan secara kontekstual, atau hidup di bawah nama biner yang berbeda (seperti python3).

Jika kita berasumsi bahwa sebuah biner Python akan selalu dipanggil python<something>dan menjadi file biner, kita bisa mencari seluruh sistem untuk file yang sesuai dengan kriteria tersebut:

$ 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

Ini jelas perintah yang cukup mengerikan tetapi ini lagi-lagi output nyata dan tampaknya telah melakukan pekerjaan yang cukup menyeluruh.

Oli
sumber
Saya mendapatkan, berikut ini, dan saya tidak yakin apa artinya: readlink: extra operand '/usr/bin/python2.7' Try 'readlink --help' for more information.
hello_there_andy
saya berasumsi python -vakan mengembalikan versi dan mengeksekusi ini sebagai root. itu mencetak daftar panjang hal-hal, tetapi di atas katanya installing zipimport hookdan sekarang sepertinya saya berada di program yang saya tidak tahu bagaimana keluar dari, apalagi uninstall ?? dapatkah Anda membantu saya di sini
PrimitiveNom
2
@Anthony -VBendera untuk versi peka terhadap huruf besar-kecil. python -vmenempatkan Anda di konsol Python dengan pesan verbose dihidupkan. Kontrol + D untuk keluar. Atau tulis exit()dan tekan kembali.
Oli
@ Halo_there_andy Saya kira Anda membuat kesalahan ketik ketika Anda menyalin perintah.
wjandrea
63

Ketik berikut di terminal ( Ctrl+ Alt+ T):

python -V

atau

python --version

Anda dapat menemukan daftar opsi / parameter untuk banyak perintah di terminal dengan mengetik perintah yang diikuti oleh --help

Contoh:

python --help

Manual / manpages juga tersedia untuk sebagian besar CLI seperti yang dapat ditampilkan oleh man <command>(Ex: man python)

Dari man python:

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

Ada juga yang python3diinstal pada banyak mesin, sehingga Anda bisa melakukannya:

python3 --version

untuk mengetahui apa python 3.x yang Anda jalankan.

rapuh
sumber
2
Perlu dicatat, karena @Florian Diesch di bawah ini menyinggung bahwa Anda kemungkinan memiliki beberapa versi "python". Panggilan "python" default menunjuk ke instalasi python 2.7, meskipun ubuntu 14.04 juga dilengkapi dengan python 3.0.
Mitch
32
python --version

dan

python2 --version

perlihatkan versi Python 2.x,

python3 --version

versi terinstal dari Python 3.x

Florian Diesch
sumber
8

Ketika Anda berjalan pythondi terminal, itu akan menghasilkan output seperti ini:

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.
>>> 

Lihat baris pertama - Python 2.7.6.

Juga jalankan python3. Saya punya 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.
>>>

Namun, ini tidak akan menunjukkan semuanya. Jika Anda memiliki 2 atau lebih versi python 3.Xx, Anda hanya akan melihat yang terbaru.

Secara default pada 14.04, Anda memiliki 2.7.6 dan 3.4.0. Seperti yang Anda lihat, saya telah memperbarui ke 3.4.1. Saya tahu bahwa saya masih memiliki 3.4.0 karena ketika saya pergi ke /usr/binsaya melihat python3.4, dan jika saya menjalankan /usr/bin/python3.4di baris perintah, saya mendapatkan 3.4.0, dan menjalankan /usr/local/bin/python3.4memberi saya 3.4.1

Kata ganti saya adalah Dia / Dia

Tim
sumber
"Jika Anda memiliki 2 atau lebih versi python 3.Xx, Anda hanya akan melihat yang terbaru." Bukankah itu akan sebaliknya menunjukkan direktori yang berisi direktori terdaftar pertama dalam PATHvariabel lingkungan? Mengapa berjalan python3selalu menjalankan tertinggi (sub) versi python3 yang diinstal? Atau, dalam praktiknya, bukankah itu akan menunjukkan versi apa pun yang ditunjukkan oleh /usr/bin/python3tautan simbolik, yang tidak perlu terbaru?
Eliah Kagan
@ Elia Tidak tahu, tetapi beberapa program mengambilnya dari sana dan yang lain dari yang /usr/bin...
Tim
2
Nah, ketika datang untuk benar-benar menjalankan program python, tergantung pada bagaimana mereka dijalankan, baris hashbang dapat digunakan untuk menentukan python yang bertindak sebagai penerjemah ( detail ; juga perhatikan penggunaan envgaris hashbang untuk menemukan mana yang ditafsirkan mungkin merupakan sistem -Disukai secara umum dalam skrip Python ). Saya tidak yakin apakah itu yang Anda maksud dengan perbedaan antara beberapa program dan lainnya.
Eliah Kagan
Tidak, seorang pengguna mengatakan bahwa idle dijalankan dengan 3.4.0 dan baris perintah dengan 3.4.1 ...
Tim
5

Anda juga dapat memeriksa versi Python dari kode itu sendiri menggunakan platformmodul dari pustaka standar. Ada dua fungsi: platform.python_version()(mengembalikan string) dan platform.python_version_tuple()(mengembalikan tuple). Naskah:

import platform

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

Berlari:

$ python test.py 
3.4.1
('3', '4', '1')
$ python2.7 test.py 
2.7.8
('2', '7', '8')
Nykakin
sumber
3
Saya pikir ini lebih umum digunakan sys.versionatau sys.version_info.
Matt Nordhoff
5

Jika Anda ingin melihat semua versi Python tersedia sebagai perintah, jalankan compgen -c python. Misalnya:

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

Jika Anda ingin mendapatkan versi masing-masing di atas, berikut ini adalah satu-liner:

$ 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

Memperbarui: python*-config

Saya perhatikan bahwa python*-configprogram tidak mendukung --versionbendera. Sebagai contoh:

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

Jadi Anda dapat memfilternya dengan grep -v, misalnya:

compgen -c python | grep -v -- '-config$'
wjandrea
sumber
Ini seharusnya jawaban atas, kurasa.
Solomon Vimal
2

Mudah, buka terminal dan lakukan hal berikut:

Menulis

python

untuk memverifikasi versi 2.x Anda Dalam kasus saya, akan muncul:

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.

Untuk 3.x, tulis:

python3

Dalam kasus saya, muncul:

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.

Untuk kedua kasus, untuk keluar dari shell Python, tulis:

 exit()
Willington
sumber
1
  • Di terminal shell

    $ which -a pythondaftar semua python.

    $ which -a python2.7daftar semua python2.7.

    $ /usr/bin/python -Vmemberikan informasi tentang versi /usr/bin/python.

  • periksa skrip python

di sini adalah ilustrasi di shell 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
Lee
sumber
saya berasumsi python -vakan mengembalikan versi dan mengeksekusi ini sebagai root. itu mencetak daftar panjang hal-hal, tetapi di atas katanya installing zipimport hookdan sekarang sepertinya saya berada di program yang saya tidak tahu bagaimana keluar dari, apalagi uninstall ?? dapatkah Anda membantu saya di sini
PrimitiveNom