Python と Linux の環境変数について質問があります。私はここで多くの質問/回答を読んできましたが、誰も私のケースではありません. ここに行きます:
virtualenvwrapper と他のいくつかのものを自動的にインストールする Python のスクリプトがあります。モジュールsysemを使用するHPCクラスターで実行されています。インストールの手順の 1 つは、いくつかの構成ファイル (~/.bashrc および ~/.virtualenvs/postactivate) を変更して、新しい環境変数とコマンドも使用できるようにすることです。
具体的には、virtualenv を管理するための多くの便利なコマンドを定義する ~/opt/mypython/bin/virtualenvwrapper.sh にソースを追加する .bashrc を変更します。同じスクリプト内で仮想環境を作成したいので、今までは次のことを行っていました。
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_call 内にあります。これは .bashrc (したがって virtualenvwrapper.sh) をソースし、mkvirtualenv を呼び出すことができます。そうしないと、mkvirtualenv をインストールしたばかりなので、使用できません。
これは、一度だけ実行する必要がある場合は問題ありません。しかし、実際には、いくつかの check_call を実行し、そのたびに .bashrc を source する必要があります。そうしないと、「クリーンな」環境で check_call を実行し、先に進むことができなくなります。
私の質問は次のとおりです。スクリプトを離れて.bashrcを調達し、スクリプトを再度入力するのと同じ方法で、一般的な環境を更新する方法はありますか?
どうもありがとうございました!
注: check_call に渡される env パラメーターにはいくつかの一般変数しかありません。virtualenvwrapper が定義するすべてのコマンドをこの env に追加することはできません。