gpt4 book ai didi

python - 在 python 脚本中更改环境

转载 作者:行者123 更新时间:2023-11-28 19:26:02 30 4
gpt4 key购买 nike

我有一个关于 python 和 linux 环境变量的问题。我在这里阅读了很多问题/答案,但没有人是我的情况。开始了:

我有一个 python 脚本,可以自动安装 virtualenvwrapper 和其他一些东西。它在使用模块系统的 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 instide check_call。这来源 .bashrc(因此是 virtualenvwrapper.sh),然后我可以调用 mkvirtualenv。否则 mkvirtualenv 将不可用,因为我刚刚安装了它。

如果我只需执行一次,这将不是问题。但事实是,我做了几次 check_calls,并且在每一次中我都必须获取 .bashrc,否则我将在“干净”的环境中执行 check_call,而我无法继续。

所以我的问题是:有没有什么方法可以更新一般环境,就像我离开脚本、获取 .bashrc 并再次进入脚本一样?

非常感谢!

注意:传递给 check_call 的 env 参数只有几个通用变量,我不能将 virtualenvwrapper 定义的每个命令都添加到这个 env。

最佳答案

正如您所注意到的,这些命令通常只是操纵环境。我将运行 env 作为此设置过程中的最后一个命令,并将其参数解析为字典。这个字典可以添加到您已有的 env 变量中,或者如果您想让它永久和全局化,您可以 os.environ.update(virtualenv_env)

关于python - 在 python 脚本中更改环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498257/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com