我想检测一下Linux系统上是否安装了python,如果是,安装了哪个python版本.
我该怎么做?有没有比解析输出更优雅的东西"python --version"?
NPE*_*NPE 73
你可以使用以下几行:
$ python -c 'import sys; print(sys.version_info[:])'
(2, 6, 5, 'final', 0)
Run Code Online (Sandbox Code Playgroud)
这里记录了元组.您可以扩展上面的Python代码,以符合您要求的方式格式化版本号,或者实际上对其执行检查.
您需要检查$?脚本以处理python未找到的情况.
PS我使用稍微奇怪的语法来确保兼容Python 2.x和3.x.
Fre*_*Foo 27
python -c 'import sys; print sys.version_info'
Run Code Online (Sandbox Code Playgroud)
或者,人类可读:
python -c 'import sys; print(".".join(map(str, sys.version_info[:3])))'
Run Code Online (Sandbox Code Playgroud)
Soh*_*b T 10
我使用Jahid的答案以及字符串中的Extract版本号 来制作纯粹用shell编写的东西.它也只返回一个版本号,而不是单词"Python".如果字符串为空,则不安装Python.
version=$(python -V 2>&1 | grep -Po '(?<=Python )(.+)')
if [[ -z "$version" ]]
then
echo "No Python!"
fi
Run Code Online (Sandbox Code Playgroud)
并且假设您要比较版本号以查看您是否使用最新版本的Python,请使用以下内容删除版本号中的句点.然后,您可以使用整数运算符比较版本,例如"我希望Python版本大于2.7.0且小于3.0.0".参考:http://tldp.org/LDP/abs/html/parameter-substitution.html中的$ {var // Pattern/Replacement}
parsedVersion=$(echo "${version//./}")
if [[ "$parsedVersion" -lt "300" && "$parsedVersion" -gt "270" ]]
then
echo "Valid version"
else
echo "Invalid version"
fi
Run Code Online (Sandbox Code Playgroud)
如果要比较shell脚本中的版本,使用sys.hexversion可能很有用
ret=`python -c 'import sys; print("%i" % (sys.hexversion<0x03000000))'`
if [ $ret -eq 0 ]; then
echo "we require python version <3"
else
echo "python version is <3"
fi
Run Code Online (Sandbox Code Playgroud)
您可以使用作为标准Python库一部分的平台模块:
$ python -c 'import platform; print(platform.python_version())'
2.6.9
Run Code Online (Sandbox Code Playgroud)
此模块允许您只打印版本字符串的一部分:
$ python -c 'import platform; major, minor, patch = platform.python_version_tuple(); print(major); print(minor); print(patch)'
2
6
9
Run Code Online (Sandbox Code Playgroud)
您可以在bash中使用此命令:
PYV=`python -c "import sys;t='{v[0]}.{v[1]}'.format(v=list(sys.version_info[:2]));sys.stdout.write(t)";`
echo $PYV
Run Code Online (Sandbox Code Playgroud)
这是另一种解决方案,使用哈希来验证是否安装了python并使用sed来提取版本的前两个主要编号并比较是否安装了最低版本
if ! hash python; then
echo "python is not installed"
exit 1
fi
ver=$(python -V 2>&1 | sed 's/.* \([0-9]\).\([0-9]\).*/\1\2/')
if [ "$ver" -lt "27" ]; then
echo "This script requires python 2.7 or greater"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
添加到一长串可能的解决方案中,这里有一个与接受的答案类似的解决方案 - 除了它内置了一个简单的版本检查:
python -c 'import sys; exit(1) if sys.version_info.major < 3 and sys.version_info.minor < 5 else exit(0)'
Run Code Online (Sandbox Code Playgroud)
如果安装了 python 并且至少是 versions 3.5,这将返回 0 ,并在以下情况下返回1:
3.5要检查值,只需比较$?(假设bash),如其他问题所示。
请注意,这不允许检查不同的版本Python2- 因为上面的单行代码将在 Py2 中引发异常。但是,由于Python2正在出门,这应该不是问题。
在 shell 脚本中检测 python 版本 2+ 或 3+:
# !/bin/bash
ver=$(python -c"import sys; print(sys.version_info.major)")
if [ $ver -eq 2 ]; then
echo "python version 2"
elif [ $ver -eq 3 ]; then
echo "python version 3"
else
echo "Unknown python version: $ver"
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57076 次 |
| 最近记录: |