我有什么版本的 Python?

sig*_*jog 90 python

如何找出我拥有的 Python 版本?

我正在使用 Ubuntu 14.04 (Trusty Tahr)。

Oli*_*Oli 108

您可以使用python -V(et al.) 向您显示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
Run Code Online (Sandbox Code Playgroud)

但这仍然只是告诉我们我们目前的python决议是什么。如果我们在 Virtualenv(一个常见的 Python 堆栈管理系统)中,python可能会解析为不同的版本:

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

这是真正的输出。

事实是,您的系统周围可能存在数百个不同版本的 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
Run Code Online (Sandbox Code Playgroud)

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

  • @Anthony 版本的“-V”标志区分大小写。`python -v` 将您置于 Python 控制台,并打开详细消息。Control + D 出去。或者写`exit()`然后按回车。 (2认同)

iff*_*ffy 65

输入端子以下(Ctrl+ Alt+ T):

python -V
Run Code Online (Sandbox Code Playgroud)

或者

python --version
Run Code Online (Sandbox Code Playgroud)

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

例子:

python --help
Run Code Online (Sandbox Code Playgroud)

也可用于大多数这样的CLI可通过被显示手动/手册页man <command>(例如:man python

来自man python

COMMAND LINE OPTIONS
        -V ,  --version
              Prints the Python version number of the executable and exits.
Run Code Online (Sandbox Code Playgroud)

python3许多机器上也安装了,所以你可以这样做:

python3 --version
Run Code Online (Sandbox Code Playgroud)

找出您正在运行的python 3.x。

  • 值得注意的是,下面的@Florian Diesch 暗示您可能有多个版本的“python”。默认的“python”调用指向 python 2.7 的安装,尽管 ubuntu 14.04 也带有 python 3.0。 (2认同)

Flo*_*sch 36

python --version
Run Code Online (Sandbox Code Playgroud)

python2 --version
Run Code Online (Sandbox Code Playgroud)

显示 Python 2.x 的版本,

python3 --version
Run Code Online (Sandbox Code Playgroud)

已安装的 Python 3.x 版本


Tim*_*Tim 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.
>>> 
Run Code Online (Sandbox Code Playgroud)

见第一行 - 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.
>>>
Run Code Online (Sandbox Code Playgroud)

但是,这不会向您展示所有内容。如果您有 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

我的代词是他/他

  • 好吧,当谈到实际运行 python 程序时,根据它们的运行方式,[hashbang line](https://en.wikipedia.org/wiki/Shebang_(Unix)) 可用于确定哪个 python 充当解释器([详细信息](http://askubuntu.com/q/238002);还要注意[在hashbang行中使用`env`](http://askubuntu.com/q/246955/22949)找到[在 [Python 脚本中常见](http://stackoverflow.com/q/2429511/1038860) 中 [以系统首选的解释](http://askubuntu.com/q/88257/22949))。我不确定这是否就是您所说的某些程序与其他程序之间的差异的意思。 (2认同)

wja*_*rea 8

如果您想查看所有可用的 Python 版本作为命令,请运行compgen -c python. 例如:

$ compgen -c python
python2.7
python3.4m
python3.4
python3m
python
python3
python2
Run Code Online (Sandbox Code Playgroud)

如果您想获得上述每个的版本:

compgen -c python | grep -v -- '-config$' | while read -r p; do
     printf "%-14s  " "$p"
     "$p" --version
done
Run Code Online (Sandbox Code Playgroud)
compgen -c python | grep -v -- '-config$' | while read -r p; do
     printf "%-14s  " "$p"
     "$p" --version
done
Run Code Online (Sandbox Code Playgroud)

注意:我过滤掉了python*-config程序,grep -v因为它们不支持该--version标志。例如:

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
Run Code Online (Sandbox Code Playgroud)


Nyk*_*kin 6

您还可以使用platform标准库中的模块从代码本身检查 Python 版本。有两个函数:(platform.python_version()返回字符串)和platform.python_version_tuple()(返回元组)。脚本:

import platform

print(platform.python_version())
print(platform.python_version_tuple())
Run Code Online (Sandbox Code Playgroud)

跑步:

$ python test.py 
3.4.1
('3', '4', '1')
$ python2.7 test.py 
2.7.8
('2', '7', '8')
Run Code Online (Sandbox Code Playgroud)

  • 我认为使用“sys.version”或“sys.version_info”更常见。 (4认同)