错误原因

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. MongoError: topology was destroyed解决方法
  2. 未来教育python视频百度云-2019年计算机二级Python语言程序设计考试大纲
  3. Spring-AOP @AspectJ进阶之绑定类注解对象
  4. html 内嵌xml数据库,是否可以在SQLite数据库中存储XML/HTML文件?
  5. 第0次作业 -- 博客园作业提交方法
  6. calling c++ from golang with swig--windows dll(一)
  7. Hive group by后面不能用列别名
  8. jack插头_防水连接器航空插头特点
  9. 靠播放业务吃不饱?音乐流媒体纷纷“加电商”卖周边
  10. EXP-00003解决
  11. 类别不平衡学习的常用策略
  12. 趣谈网络协议笔记 - 通信协议综述
  13. 25个超适合学生党的0成本兼职,自我增值的最有效方式
  14. TMOD、TCON、SCON、PCON、SBUF寄存器说明
  15. 将Unity地形以Wavefront Obj格式导出
  16. AVT Mako/Manta面阵相机开发小结
  17. sqlite3+mmicu微信全文搜索fts编译过程
  18. 再见了,并不美好的 PC 互联网
  19. 2004年11月12日
  20. Python大道至简(第七部分)

热门文章

  1. VTK -SurfaceReconstruction
  2. vue antvG6 多功能tree图 树图树结构
  3. XP停止更新 企业电脑该选择什么安全软件
  4. EasyExcel导入数据全为空问题
  5. 深度学习环境配置之一——Ubuntu系统安装
  6. 才女李清照到底有多美?
  7. 重大突破!中国量子计算机“九章”问世!速度超谷歌“量子霸权”100亿倍
  8. myfile.Open 超时返回 c++_DNF:改版后全职业漩涡本排名,鬼泣成唯一幻神,纯C没有超一线...
  9. 数学分析 重积分(第21章)2 重积分的应用,n重积分,反常二重积分,变量变换公式
  10. linux红帽chown命令,Linux chown命令