错误原因

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命令导出环境变量相关推荐

  1. 从Python调用外部命令

    您如何在Python脚本中调用外部命令(就像我在Unix Shell或Windows命令提示符下键入的一样)? #1楼 os.system不允许您存储结果,因此,如果您要将结果存储在某个列表中或sub ...

  2. python调用shell命令-用Python调用Shell命令

    Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如 ...

  3. python调用cmd命令释放端口_详解python调用cmd命令三种方法

    目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...

  4. python 执行shell_用Python调用Shell命令

    Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如 ...

  5. uboot命令集环境变量

    文章目录 前言 命令集 环境变量 uboot中对Flash和DDR的管理 前言 uboot的命令因为适配自己的硬件,基本都经过裁剪,所以自己的命令集和其用法可能会有缺失 uboot文章连载: 1.ub ...

  6. python调用shell命令-Python调用shell命令常用方法(4种)

    方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令 ...

  7. python要配置几个环境变量_Python环境变量配置

    第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64 ...

  8. linux如何用命令寻找环境变量?

    linux如何用命令寻找环境变量? 要在Linux中查找环境变量,您可以使用以下命令: printenv:此命令将列出所有已设置的环境变量. env:此命令也将列出所有已设置的环境变量. echo $ ...

  9. python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?

    原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...

最新文章

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

热门文章

  1. 百度AI studio配置tensorflow环境
  2. 解决Linux 微信不能发送图片问题
  3. Evil Coordinate(思维+贪心)
  4. 苹果手机小圆点怎么设置?一招搞定!
  5. mysql 主键重复问题解决 Duplicate entry '787192513' for key 'PRIMARY'
  6. 最全详解Android设备UDID还是唯一ID?
  7. 高山云雾长,流水叹知音
  8. 【js】js数据类型
  9. bootstrap初试
  10. 蓝桥杯 历届试题 九宫幻方