0

0

查看Python版本怎样在Shell脚本中获取版本 查看Python版本的Shell脚本实现教程​

看不見的法師

看不見的法師

发布时间:2025-08-13 15:47:01

|

263人浏览过

|

来源于php中文网

原创

最简单的方法是使用python --version 2>&1 | awk '{print $2}'直接获取版本号;2. 更健壮的方式是先用which python3获取路径,再执行该路径下的解释器获取版本;3. 对于虚拟环境,需先source激活环境再执行python --version;4. 处理多版本时可使用python3.8等具体命令或update-alternatives配置默认版本;5. 为兼容不同输出格式,可用grep -op 'python \k\d+\.\d+(\.\d+)?'提取版本号;6. 为防解释器缺失或无执行权,应先用command -v和[ -x "$(which python)" ]判断存在性和可执行性,确保脚本健壮性。

查看Python版本怎样在Shell脚本中获取版本 查看Python版本的Shell脚本实现教程​

想在Shell脚本中获取Python版本?其实方法挺多的,最直接的就是用

python --version
命令,但如果考虑到兼容性或者有多个Python版本,可能需要更精细的处理。

解决方案

最简单粗暴的方法,直接用

python --version
,然后用
awk
或者
sed
提取版本号。

立即学习Python免费学习笔记(深入)”;

python --version 2>&1 | awk '{print $2}'

这里

2>&1
是为了把标准错误也重定向到标准输出,因为有些Python版本可能会把版本信息输出到标准错误。
awk '{print $2}'
则是提取输出的第二列,也就是版本号。

但这种方法有个问题,就是依赖于

python
命令存在,而且必须在PATH环境变量里。如果用户没有安装Python,或者
python
命令指向的不是你想要的Python版本,就可能出错。

更健壮的方法是先找到Python解释器的路径,再用它来获取版本。比如,你可以用

which python3
来查找Python 3的解释器路径,然后:

python_path=$(which python3)
if [ -n "$python_path" ]; then
  version=$("$python_path" --version 2>&1 | awk '{print $2}')
  echo "Python version: $version"
else
  echo "Python 3 not found."
fi

这个方法先检查

python3
命令是否存在,如果存在,就获取它的路径,然后用这个路径来获取版本号。这样就避免了依赖PATH环境变量的问题。

还有一种情况,就是你可能需要获取特定虚拟环境中的Python版本。这种情况下,你需要先激活虚拟环境,然后再获取版本。

source /path/to/venv/bin/activate
python --version 2>&1 | awk '{print $2}'
deactivate

注意,

deactivate
命令是用来退出虚拟环境的,用完记得退出,不然可能会影响后续的操作。

如何处理系统中存在多个Python版本的情况?

如果你的系统里同时安装了Python 2和Python 3,或者有多个Python 3版本,那你可能需要更精确地指定要使用的Python版本。

AI Web Designer
AI Web Designer

AI网页设计师,快速生成个性化的网站设计

下载

一种方法是使用

python3.x
这样的命令,比如
python3.8
python3.9
等等。如果你的系统里安装了这些特定版本的Python,就可以直接使用它们。

python3_8_path=$(which python3.8)
if [ -n "$python3_8_path" ]; then
  version=$("$python3_8_path" --version 2>&1 | awk '{print $2}')
  echo "Python 3.8 version: $version"
else
  echo "Python 3.8 not found."
fi

另一种方法是使用

update-alternatives
命令。这个命令可以用来管理系统中多个命令的链接。比如,你可以用它来设置
python
命令默认指向的Python版本。

sudo update-alternatives --config python

然后选择你想要的Python版本。不过这种方法需要root权限,而且会影响整个系统的Python配置,所以要谨慎使用。

如何在Shell脚本中兼容不同的Python版本输出格式?

不同的Python版本,

python --version
命令的输出格式可能不一样。有些版本可能把版本信息输出到标准输出,有些可能输出到标准错误。有些版本可能输出完整的版本号,有些可能只输出主版本号和次版本号。

为了兼容不同的输出格式,你可以使用更灵活的正则表达式来提取版本号。比如:

python --version 2>&1 | grep -oP 'Python \K\d+\.\d+(\.\d+)?'

这个命令使用了

grep -oP
来提取匹配的字符串。
grep -o
表示只输出匹配的部分,
grep -P
表示使用Perl正则表达式。
Python \K\d+\.\d+(\.\d+)?
这个正则表达式表示匹配以"Python "开头,后面跟着一个或多个数字、一个点、一个或多个数字,可选地跟着一个点和一个或多个数字的字符串。
\K
表示忽略"Python "之前的部分,只输出后面的版本号。

这个方法可以兼容大部分Python版本的输出格式,但也不是万能的。如果遇到特殊的输出格式,可能需要修改正则表达式。

如何处理Python解释器不存在或者无法执行的情况?

如果

python
命令不存在,或者用户没有执行Python解释器的权限,那么上面的脚本就会出错。为了避免这种情况,你可以先检查Python解释器是否存在,并且用户是否有执行权限。

if command -v python >/dev/null 2>&1; then
  if [ -x "$(which python)" ]; then
    version=$(python --version 2>&1 | awk '{print $2}')
    echo "Python version: $version"
  else
    echo "Python interpreter is not executable."
  fi
else
  echo "Python interpreter not found."
fi

command -v python
命令用来检查
python
命令是否存在。如果存在,就继续检查用户是否有执行
python
命令的权限。
[ -x "$(which python)" ]
用来检查
python
命令是否可执行。如果可执行,就获取版本号。否则,就输出错误信息。

这个方法可以避免Python解释器不存在或者无法执行的情况,提高了脚本的健壮性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

531

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

258

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

766

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

219

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

357

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

245

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

547

2023.12.06

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号