Tôi có phiên bản Python nào?


73

Làm cách nào tôi có thể tìm ra phiên bản Python nào tôi có?

Tôi đang sử dụng Ubuntu 14.04 (Trusty Tahr).


4
Ngoài ra, một cách nhanh chóng để xem những gì nhị phân trăn được cài đặt là:ls /usr/bin | grep python
Tejas Kale

1
@TejasKale Tốt hơn để chạy ls /usr/bin/python*(hoặc ls /usr/bin/*python*nếu bạn thực sự muốn các tệp có python bất kỳ nơi nào có tên). Theo cách đó, lsvẫn định dạng đầu ra của nó cho một thiết bị đầu cuối (và bạn nhận được nhiều cột và, với lsbí danh mặc định trong Ubuntu, tô màu).
Eliah Kagan

Câu trả lời:


86

Bạn có thể sử dụng python -V(et al.) Để hiển thị cho bạn phiên bản Python mà pythonlệnh giải quyết. Nếu đó là tất cả những gì bạn cần, bạn đã hoàn thành. Nhưng để xem mọi phiên bản của python trong hệ thống của bạn cần thêm một chút.

Trong Ubuntu chúng ta có thể kiểm tra độ phân giải với readlink -f $(which python). Trong trường hợp mặc định trong 14.04, điều này sẽ chỉ đến /usr/bin/python2.7.

Chúng ta có thể xâu chuỗi này để hiển thị phiên bản của phiên bản Python đó:

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

Nhưng điều này vẫn chỉ cho chúng tôi biết pythongiải pháp hiện tại của chúng tôi là gì. Nếu chúng tôi ở trong Virtualenv (một hệ thống quản lý ngăn xếp Python phổ biến) pythoncó thể phân giải thành một phiên bản khác:

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

Đây là đầu ra thực sự.

Thực tế là có thể có hàng trăm phiên bản Python khác nhau được tiết ra xung quanh hệ thống của bạn, trên các đường dẫn được thêm vào theo ngữ cảnh hoặc sống dưới các tên nhị phân khác nhau (như python3).

Nếu chúng tôi giả định rằng tệp nhị phân Python sẽ luôn được gọi python<something>và là tệp nhị phân, chúng tôi có thể tìm kiếm toàn bộ hệ thống để tìm các tệp phù hợp với các tiêu chí đó:

$ 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

Đây rõ ràng là một lệnh khá gớm ghiếc nhưng đây lại là đầu ra thực sự và dường như nó đã thực hiện một công việc khá kỹ lưỡng.


Tôi đang nhận được, những điều sau đây và tôi không chắc nó có nghĩa là gì: readlink: extra operand '/usr/bin/python2.7' Try 'readlink --help' for more information.
hello_there_andy

tôi giả sử python -vsẽ trả lại phiên bản và thực hiện điều này như root. Nó đã in ra một danh sách dài các thứ, nhưng ở đầu nó nói installing zipimport hookvà bây giờ có vẻ như tôi đang ở trong một chương trình mà tôi không biết làm thế nào để thoát ra, chứ đừng nói đến việc gỡ cài đặt ?? bạn có thể giúp tôi ra khỏi đây không
PrimitiveNom

2
@Anthony -VCờ cho phiên bản có phân biệt chữ hoa chữ thường. python -vđưa bạn vào bảng điều khiển Python với các thông báo dài dòng được bật. Kiểm soát + D để thoát ra. Hoặc viết exit()và nhấn trở lại.
Oli

@hello_there_andy Tôi đoán bạn đã mắc lỗi đánh máy khi sao chép lệnh.
wjandrea

63

Nhập sau trong thiết bị đầu cuối ( Ctrl+ Alt+ T):

python -V

hoặc là

python --version

Bạn có thể tìm thấy danh sách các tùy chọn / tham số cho nhiều lệnh trong thiết bị đầu cuối bằng cách nhập lệnh theo sau --help

Thí dụ:

python --help

Hướng dẫn sử dụng / trang cũng có sẵn cho hầu hết các CLI như vậy có thể được hiển thị bởi man <command>(Ví dụ man python:)

Từ man python:

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

Ngoài ra còn python3được cài đặt trên nhiều máy, vì vậy bạn có thể làm:

python3 --version

để tìm ra python 3.x bạn đang chạy.


2
Điều đáng chú ý, vì @Florian Diesch dưới đây ám chỉ rằng bạn có thể có nhiều phiên bản "trăn". Cuộc gọi "python" mặc định trỏ đến cài đặt python 2.7, mặc dù ubfox 14.04 cũng đi kèm với python 3.0.
Mitch

32
python --version

python2 --version

hiển thị phiên bản Python 2.x,

python3 --version

phiên bản cài đặt của Python 3.x


8

Khi bạn chạy pythontrong thiết bị đầu cuối, nó sẽ tạo ra đầu ra như thế này:

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

Xem dòng đầu tiên - Python 2.7.6.

Cũng chạy python3. Tôi có 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.
>>>

Tuy nhiên, điều này sẽ không cho bạn thấy tất cả. Nếu bạn có 2 phiên bản python 3.Xx trở lên, bạn sẽ chỉ thấy phiên bản mới nhất.

Theo mặc định vào ngày 14.04, bạn có 2.7.6 và 3.4.0. Như bạn thấy, tôi đã cập nhật lên 3.4.1. Tôi biết rằng tôi vẫn có 3.4.0 bởi vì khi tôi đi đến /usr/bintôi thấy python3.4và nếu tôi chạy /usr/bin/python3.4trong dòng lệnh, tôi nhận được 3.4.0 và việc chạy /usr/local/bin/python3.4mang lại cho tôi 3.4.1

Đại từ của tôi là He / Ngài


"Nếu bạn có 2 phiên bản python 3.Xx trở lên, bạn sẽ chỉ thấy phiên bản mới nhất." Thay vào đó, nó sẽ hiển thị cái nào có thư mục chứa nó được liệt kê đầu tiên trong PATHbiến môi trường? Tại sao chạy python3luôn chạy phiên bản cao nhất (phụ) của python3 được cài đặt? Hoặc, trong thực tế, nó sẽ không hiển thị bất kỳ phiên bản nào mà /usr/bin/python3liên kết tượng trưng trỏ tới, mà không cần phải là phiên bản mới nhất?
Eliah Kagan

@Eliah Không có ý tưởng, nhưng một số chương trình lấy nó từ đó và những chương trình khác từ đó /usr/bin...
Tim

2
Chà, khi nói đến việc thực sự chạy các chương trình python, tùy thuộc vào cách chúng chạy, dòng hashbang có thể được sử dụng để xác định python nào đóng vai trò là trình thông dịch ( chi tiết ; cũng lưu ý việc sử dụng các envdòng hashbang để tìm ra bất kỳ phiên dịch nào có thể là hệ thống -preferred trong phổ biến ở các kịch bản Python ). Tôi không chắc đó là ý của bạn bởi sự khác biệt giữa một số chương trình và những chương trình khác.
Eliah Kagan

Không, một người dùng nói rằng idle đã chạy với 3.4.0 và dòng lệnh với 3.4.1 ...
Tim

5

Bạn cũng có thể kiểm tra phiên bản Python từ chính mã bằng platformmô-đun từ thư viện chuẩn. Có hai hàm: platform.python_version()(trả về chuỗi) và platform.python_version_tuple()(trả về tuple). Kịch bản:

import platform

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

Đang chạy:

$ python test.py 
3.4.1
('3', '4', '1')
$ python2.7 test.py 
2.7.8
('2', '7', '8')

3
Tôi nghĩ rằng nó phổ biến hơn để sử dụng sys.versionhoặc sys.version_info.
Matt Nordhoff

5

Nếu bạn muốn xem tất cả các phiên bản Python có sẵn dưới dạng lệnh, hãy chạy compgen -c python. Ví dụ:

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

Nếu bạn muốn lấy phiên bản của từng loại trên, đây là một lớp lót:

$ 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

Cập nhật: python*-config

Tôi nhận thấy rằng python*-configcác chương trình không hỗ trợ --versioncờ. Ví dụ:

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

Vì vậy, bạn có thể lọc chúng ra grep -v, ví dụ:

compgen -c python | grep -v -- '-config$'

Đây là câu trả lời hàng đầu, tôi đoán vậy.
Solomon Vimal

2

Dễ dàng, mở thiết bị đầu cuối và làm như sau:

Viết

python

để xác minh phiên bản 2.x của bạn Trong trường hợp của tôi, nó sẽ xuất hiện:

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.

Đối với 3.x, viết:

python3

Trong trường hợp của tôi, nó xuất hiện:

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.

Đối với cả hai trường hợp, để thoát khỏi shell Python, hãy viết:

 exit()

1
  • Trong thiết bị đầu cuối vỏ

    $ which -a pythonliệt kê tất cả của bạn python.

    $ which -a python2.7liệt kê tất cả của bạn python2.7.

    $ /usr/bin/python -Vcung cấp thông tin về phiên bản của /usr/bin/python.

  • kiểm tra kịch bản python

đây là một sự bất hợp lý trong vỏ 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

tôi giả sử python -vsẽ trả lại phiên bản và thực hiện điều này như root. Nó đã in ra một danh sách dài các thứ, nhưng ở đầu nó nói installing zipimport hookvà bây giờ có vẻ như tôi đang ở trong một chương trình mà tôi không biết làm thế nào để thoát ra, chứ đừng nói đến việc gỡ cài đặt ?? bạn có thể giúp tôi ra khỏi đây không
PrimitiveNom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.