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经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...
最新文章
- 13个JavaScript单行式代码
- Python 下载的九种方法
- zookeeper的acl权限控制_Zookeeper 权限控制 ACL介绍
- Python爬虫从入门到放弃(十三)之 Scrapy框架的命令行详解
- WordPress Plupload插件未明跨站脚本漏洞
- LKT系列加密芯片如何预置openssl生成的rsa密钥完成运算
- 开课吧9.9元学python靠谱吗-开课吧的python课程怎么样,值得报名吗?
- c语言方框透视原理,FPS游戏的方框透视+自瞄原理
- 面向对象的软件开发方法
- windows 7 删除保留分区
- python代码 将文件夹下的.png图片转换为.mat图片 批量转换为mat
- pandas分组计算平均值_Pandas之分组计算
- 北京理工大学软件工程复试之路
- SAP R3 功能详解 - 固定资产会计
- html中3d哪个方向是x轴,详解用CSS绘制3D旋转立方体
- linux 锐龙 i7,限制功耗的锐龙7也比i7快114%!ThinkPad L14锐龙版评测
- 下载ug时java更新未完成_UG导入导出Dwg,Dxf文件提示:转换未完成,网上说的方法都试了一遍没用怎么办?...
- 快速通读教材《现代软件工程——构建之法》后的随笔
- Aspose.Words模板创建Word【一】
- 【软件推荐系列第 3 篇】如何下载、设置时钟屏保