Omics - Hunter

python下调用conda环境

今天在设计pipeline时遇见一个问题,想利用python调用conda环境!直接使用os.system()发现一些问题。

首先python的system进程创建有以下特点:

1)父进程的环境变量会默认传递到子进程中

2)使用system函数,子进程无法影响父进程中的环境变量

简单的说就是每一条os.system命令都是独立的。

如:os.system(CMD1)和os.system(CMD2)的环境不会共享,如果你想在同一个环境下运行CMD1和CMD2,那么你的命令应该写成

os.system(CMD1 && CMD2)

或者

os.system(CMD1 && CMD2)

现在有了这个前置的知识,我们现在来解决python中如果调用conda环境。如我需要调用conda环境的openms(linux一般默认conda会初始化在你的.bashrc文件中;windows直接在conda的CMD中执行切换即可),下面以在linux环境下切换为例说明:

os.system("source ~/.bashrc ; conda activate openms; CMD1; CMD2")

参考资料:

1.https://docs.python.org/2/library/os.html#os.system


作者:陈浩


版权:本文版权归作者所有


免责声明:本文中使用的部分图片来自于网络或者参考资料,如有侵权,请联系博主:chenhao__@__evvail.com(发件请删除下划线)进行删除


转载注意:除非特别声明,本站点内容均为作者原创文章,转载须以链接形式标明本文链接


本文链接:https://evvail.com/2019/09/24/205.html

1 评论

  1. 陈浩

    2019/9/25 在 16:42

    修正文章中一处错误,conda多命令除了
    os.system(CMD1 && CMD2)
    还可以
    os.system(CMD1 ; CMD2)

    注:所有符号都是英文状态下的符号

发表回复

如果你有什么好的建议或者疑问请给我留言,谢谢!

Captcha Code