Python 调用source命令导出环境变量
错误原因
python直接调用os.system("source .sh")无法导出shell文件中设置的环境变量
因为os.system是启动子进程阻塞式调用命令行,导出的环境变量在父进程中无效。
解决方法
在python3中,更推荐使用Subprocess方法调用命令行。
这里我们调用source后,把子进程的环境变量用env打印出来。
最后使用python标准的os.environ.update设置环境变量。
代码
因为我这边的环境变量导出脚本只支持bash,所以加上了bash -c
没有这个限制的可以把Popen改为:
pipe = subprocess.Popen('source %s; env' % script, stdout=subprocess.PIPE, shell=True)
# 类source方式,导出环境变量
def shell_source(script):"""Sometime you want to emulate the action of"source" in bash,settings some environment variables. Here is a way to do it."""pipe = subprocess.Popen('/bin/bash -c "source %s; env"' % script, stdout=subprocess.PIPE, shell=True)output = pipe.communicate()[0]for line in output.splitlines():line_decode = line.decode()print(line_decode)if len(line_decode.split("=")) > 1:key, value = line.decode().split("=", 1)os.environ.update({key: value})
Python 调用source命令导出环境变量相关推荐
- 从Python调用外部命令
您如何在Python脚本中调用外部命令(就像我在Unix Shell或Windows命令提示符下键入的一样)? #1楼 os.system不允许您存储结果,因此,如果您要将结果存储在某个列表中或sub ...
- python调用shell命令-用Python调用Shell命令
Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如 ...
- python调用cmd命令释放端口_详解python调用cmd命令三种方法
目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...
- python 执行shell_用Python调用Shell命令
Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如 ...
- uboot命令集环境变量
文章目录 前言 命令集 环境变量 uboot中对Flash和DDR的管理 前言 uboot的命令因为适配自己的硬件,基本都经过裁剪,所以自己的命令集和其用法可能会有缺失 uboot文章连载: 1.ub ...
- python调用shell命令-Python调用shell命令常用方法(4种)
方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令 ...
- python要配置几个环境变量_Python环境变量配置
第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64 ...
- linux如何用命令寻找环境变量?
linux如何用命令寻找环境变量? 要在Linux中查找环境变量,您可以使用以下命令: printenv:此命令将列出所有已设置的环境变量. env:此命令也将列出所有已设置的环境变量. echo $ ...
- python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?
原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...
最新文章
- MongoError: topology was destroyed解决方法
- 未来教育python视频百度云-2019年计算机二级Python语言程序设计考试大纲
- Spring-AOP @AspectJ进阶之绑定类注解对象
- html 内嵌xml数据库,是否可以在SQLite数据库中存储XML/HTML文件?
- 第0次作业 -- 博客园作业提交方法
- calling c++ from golang with swig--windows dll(一)
- Hive group by后面不能用列别名
- jack插头_防水连接器航空插头特点
- 靠播放业务吃不饱?音乐流媒体纷纷“加电商”卖周边
- EXP-00003解决
- 类别不平衡学习的常用策略
- 趣谈网络协议笔记 - 通信协议综述
- 25个超适合学生党的0成本兼职,自我增值的最有效方式
- TMOD、TCON、SCON、PCON、SBUF寄存器说明
- 将Unity地形以Wavefront Obj格式导出
- AVT Mako/Manta面阵相机开发小结
- sqlite3+mmicu微信全文搜索fts编译过程
- 再见了,并不美好的 PC 互联网
- 2004年11月12日
- Python大道至简(第七部分)
热门文章
- VTK -SurfaceReconstruction
- vue antvG6 多功能tree图 树图树结构
- XP停止更新 企业电脑该选择什么安全软件
- EasyExcel导入数据全为空问题
- 深度学习环境配置之一——Ubuntu系统安装
- 才女李清照到底有多美?
- 重大突破!中国量子计算机“九章”问世!速度超谷歌“量子霸权”100亿倍
- myfile.Open 超时返回 c++_DNF:改版后全职业漩涡本排名,鬼泣成唯一幻神,纯C没有超一线...
- 数学分析 重积分(第21章)2 重积分的应用,n重积分,反常二重积分,变量变换公式
- linux红帽chown命令,Linux chown命令