我有什么版本的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