我有什么版本的Python?

如何找到我的Python版本?

我使用的是Ubuntu 14.04(Trusty Tahr)。

您可以使用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并且是一个二进制文件,我们可以在整个系统中搜索符合这些条件的文件:

 $ 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 

这显然是一个非常可怕的命令,但这又是真正的输出,似乎做了相当彻底的工作。

在终端中键入以下内容( Ctrl + Alt + T ):

 python -V 

要么

 python --version 

您可以通过键入命令后跟–help来查找终端中许多命令的选项/参数列表

例:

 python --help 

手册/联机帮助页也适用于大多数此类CLI,可以通过man 显示(例如: 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.

 python --version 

 python2 --version 

显示Python 2.x的版本,

 python3 --version 

已安装的Python 3.x版本

当你在终端中运行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

您还可以使用标准库中的platform模块从代码本身检查Python版本。 有两个函数: 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') 

如果要查看所有可用的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程序不支持--version标志。 例如:

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

轻松打开终端并执行以下操作:

 python 

validation你的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 shell中退出,请写:

  exit() 
  • 在shell终端

    $ which -a python列出你所有的python

    $ which -a python2.7列出了你所有的python2.7

    $ /usr/bin/python -V提供有关/usr/bin/python版本的信息。

  • 检查python脚本

这是ipython shell中的ilustration:

 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