我有一个关于python和linux环境变量的问题。我在这里读了很多问题/答案,但没有一个是我的。接下来是:
我有一个python脚本,可以自动安装virtualenvwrapper和其他一些东西。它运行在使用模块sysem的HPC集群上。安装的步骤之一是修改一些配置文件(~/.bashrc和~/.virtualenvs/postactivate),以便可以使用新的环境变量和命令。在
具体地说,我修改了.bashrc,在~/opt/mypython/bin中添加了一个源代码/virtualenvwrapper.sh,它定义了许多有用的命令来管理virtualenv。在同一个脚本中,我要创建一个虚拟环境,因此,到目前为止,我在做:
在install_and_create_virtualenv ='''
easy_install --prefix=~/opt/mypython pip &&
pip install virtualenvwrapper --install-option="--prefix=~/opt/mypython" &&
. ~/.bashrc &&
module unload python &&
mkvirtualenv --python=/sw/comp/python/2.7_kalkyl/bin/python master
'''
check_call(install_and_create_virtualenv, shell=True, env=env)
如你所见,我做了一个。~/.bashrc安装check_调用。这来源于bashrc(因此virtualenvwrapper.sh)然后我可以打电话给mkvirtualenv。否则mkvirtualenv将不可用,因为我刚刚安装了它。在
如果我只需要做一次就没问题了。但事实上,我做了几个check_调用,并且在每个调用中我都要source.bashrc,因为否则我在一个“干净”的环境中执行check_调用,我无法继续。在
所以我的问题是:有没有什么方法可以像我离开脚本、sourcing.bashrc并再次输入脚本一样更新通用环境?在
非常感谢!在
注意:传递给check_调用的env参数只有几个通用变量,我不能将virtualenvwrapper定义的每个命令都添加到这个env中。在