如何查看我使用的Python版本?
我正在使用Ubuntu 14.04(Trusty Tahr)。
我正在使用Ubuntu 14.04(Trusty Tahr)。
python -V
(等等)来显示python
命令解析到的Python版本。如果这就是你需要的,那么你已经完成了。但是要查看系统中的每个Python版本需要更多一些。readlink -f $(which python)
来检查解析结果。在14.04默认情况下,这将简单地指向/usr/bin/python2.7
。$ 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
python3
)。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
readlink: extra operand '/usr/bin/python2.7'
请尝试输入 'readlink --help' 以获取更多信息。
- hello_there_andypython -v
会返回版本信息,并以 root 用户身份执行了该命令。它打印出了一长串的内容,但在顶部显示了 installing zipimport hook
,现在我似乎陷入了一个程序中,我不知道如何退出,更不用说卸载了?? 你能帮我解决这个问题吗? - oldboy-V
标志是区分大小写的。python -v
会将您放入一个打开了详细信息的Python控制台中。按下Control + D退出。或者输入exit()
并按回车键退出。 - Oliecho $PATH
应该能告诉你具体内容,但是我无法解释为什么。我对conda不太熟悉。可能在~/.bashrc或其他地方有自动设置路径的内容。 - Olipython -V
或者
python --version
python --help
man <command>
(例如:man python
)来显示。
从man python
中:
COMMAND LINE OPTIONS
-V , --version
Prints the Python version number of the executable and exits.
python3
,所以你可以这样做:python3 --version
python --version
和
python2 --version
python3 --version
compgen -c python
。例如:$ compgen -c python | sort -u
python
python2
python2.7
python3
python3.4
python3.4m
python3m
compgen -c python | sort -u | grep -v -- '-config$' | while read -r p; do
printf "%-14s " "$p"
"$p" --version
done
python Python 2.7.6
python2 Python 2.7.6
python2.7 Python 2.7.6
python3 Python 3.4.3
python3.4 Python 3.4.3
python3.4m Python 3.4.3
python3m Python 3.4.3
注意事项:
这会忽略别名。例如,如果我有alias python=python3
,上面的命令仍然会显示python
的版本为2.7。要包括别名,你可以使用eval
(尽管这可能不安全):eval "$p --version"
grep -v
过滤掉不支持--version
标志的python*-config
程序。例如:$ python3-config --version
Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir
zsh
下似乎不起作用。我猜compgen
是特定于bash的?或者至少,在zsh
中也存在,但是compgen -c python | wc -l
对我来说报告了超过6000个匹配项,使其变得相当无用。 - bluenote10compgen
命令。 - wjandreapython
时,它会产生如下输出: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.
>>>
PATH
环境变量中首先列出的包含目录的版本吗?为什么运行python3
总是运行已安装的最高(子)版本的Python3呢?实际上,它不是显示/usr/bin/python3
符号链接指向的版本吗?这个版本未必是最新的。 - Eliah Kagan/usr/bin
获取... - Timenv
以找到系统首选的解释器,这在Python脚本中很常见)。我不确定这是否是你所指的一些程序和其他程序之间的差异。 - Eliah Kaganimport 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')
sys.version
或sys.version_info
更为常见。 - Matt Nordhoffpython
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.
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.
exit()
在shell终端中
$ which -a python
列出所有的 python
。
$ which -a python2.7
列出所有的 python2.7
。
$ /usr/bin/python -V
提供关于 /usr/bin/python
版本的信息。
在python脚本中检查
以下是在ipython shell中的示例:
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
python -v
会返回版本信息,以root身份执行了这个命令。它打印出了一长串内容,在顶部显示了installing zipimport hook
,现在我好像陷入了一个我完全不知道如何退出,更别说卸载的程序中。你能帮我解决这个问题吗? - oldboypython -v
意味着以冗长模式运行交互式解释器,会输出大量详细信息。大V python -V
则是获取版本号。退出解释器很简单且一致。可以使用 Ctrl-Z
或 Ctrl-D
或 Ctrl-Break
或 exit()
或 quit()
或 sys.exit()
。好吧,事实上并不简单且一致。 - Bob Stein#!/usr/bin/env bash
usage() {
echo "Put your help/usage explanation here"
exit 1
}
get_python_version_to_use() {
if python3 --version 2>&1 | grep -q "Python 3" ; then
echo "python3"
elif python --version 2>&1 | grep -q "Python 3"; then
echo "python"
elif python --version 2>&1 | grep -q "Python 2" ; then
echo "python"
else
echo "Error: Python not found";
usage
fi
}
PYTHON_COMMAND=$(get_python_version_to_use)
echo $PYTHON_COMMAND
PYTHON_COMMAND=$(get_python_version_to_use)
$PYTHON_COMMAND my_script.py
它将根据您的机器上安装的情况使用python3或python2(优先选择python3)
ls /usr/bin | grep python
。 - Tejas Kalels /usr/bin/python*
(或者如果你真的想要名字中任何地方都有python
的文件,可以运行ls /usr/bin/*python*
)。这样,ls
仍然会为终端格式化其输出(并且您将获得多列和在Ubuntu中默认的ls
别名下,还有颜色显示)。 - Eliah Kagan