Jupyterがbashrcファイルのenv変数を認識できないという問題があります。これらの変数をjupyterにロードしたり、custome変数を追加したりする方法はありますか?
Jupyterがbashrcファイルのenv変数を認識できないという問題があります。これらの変数をjupyterにロードしたり、custome変数を追加したりする方法はありますか?
回答:
Jupyter Notebookで環境変数を設定するに%
は、%env
または%set_env
、たとえば、%env MY_VAR=MY_VALUE
またはのいずれかの魔法のコマンドを使用します%env MY_VAR MY_VALUE
。(%env
現在の環境変数を印刷するために単独で使用します。)
参照:http://ipython.readthedocs.io/en/stable/interactive/magics.html
os.environ[var] = val
バックエンドで:github.com/ipython/ipython/blob/master/IPython/core/magics/...
kernel.json
ファイルに変数を設定することもできます。私のソリューションは、jupyterカーネルを起動するたびに同じ環境変数が必要な場合、特に異なるタスクに複数の環境変数のセットがある場合に役立ちます。
環境変数を使用して新しいipythonカーネルを作成するには、次の手順を実行します。
jupyter kernelspec list
して、カーネルがインストールされているリストとファイルが保存されている場所を確認します。python2
)を新しいディレクトリ(例python2_myENV
)にコピーします。display_name
新しいkernel.json
ファイルでを変更します。env
環境変数を定義する辞書を追加します。あなたのカーネルJSONは(私は除いて、インストールkernel.jsonから何も変更しなかった。このようになりますdisplay_name
とenv
):
{
"display_name": "Python 2 with environment",
"language": "python",
"argv": [
"/usr/bin/python2",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"env": {"LD_LIBRARY_PATH":""}
}
LD_LIBRARY_PATH
コンパイルされたモジュール(Cで記述されたものなど)のロード方法に影響を与える変数を設定したいと思いました。を使用%set_env
してこの変数を設定することはできませんでした。C:\Program Files (x86)\Graphviz2.38\bin\dot.exe
提案された手法を使用して既存のシステムパスに追加する方法を教えてください。管理者アカウントを使用していない場合でも機能しますか?私は、Windows 10使用しています
sys.executable
ない限りPYTHONEXECUTABLE
、上書きされます。
Pythonを使用している場合は、.env
ファイルに環境変数を定義し、python-dotenvを使用してJupyterノートブック内からそれらをロードできます。
python-dotenvをインストールします。
pip install python-dotenv
.env
Jupyterノートブックにファイルをロードします。
%load_ext dotenv
%dotenv
次のように、コードで環境変数を設定できます。
import sys,os,os.path
sys.path.append(os.path.expanduser('~/code/eol_hsrl_python'))
os.environ['HSRL_INSTRUMENT']='gvhsrl'
os.environ['HSRL_CONFIG']=os.path.expanduser('~/hsrl_config')
これはもちろん一時的な修正であり、永続的な修正を取得するには、おそらく変数をにエクスポートする必要があります~.profile
。詳細については、こちらをご覧ください。
%env MY_VAR=MY_VALUE
、この質問に対する正しい答えであるはずです
systemdを使用している場合は、systemdユニットファイルに追加する必要があるようです。これはUbuntu16で行われます。それらを.profileと.bashrc(/ etc / profileでさえ)に入れると、ENVVarがjuypterノートブックで使用できなくなりました。
私は編集しなければなりませんでした:
/lib/systemd/system/jupyer-notebook.service
そして、私が読みたい変数を次のようにユニットファイルに入れます。
Environment=MYOWN_VAR=theVar
そうして初めて、juypterノートブック内からそれを読むことができました。
関連する(短期的な)解決策は、環境変数を予測可能な形式で単一のファイルに保存することです。このファイルは、端末の起動時やノートブックへの読み込み時に取得できます。たとえば.env
、環境変数の定義がVARIABLE_NAME=VARIABLE_VALUE
(空白行や余分なスペースがない)形式のファイルがあります。新しいターミナルセッションを開始するときに、.bashrc
またはファイルでこのファイル.bash_profile
を入手できます。これを次のようなノートブックに読み込むことができます。
import os
env_vars = !cat ../script/.env
for var in env_vars:
key, value = var.split('=')
os.environ[key] = value
相対パスを使用して、この.env
ファイルがどこにでも存在し、ノートブックファイルを含むディレクトリを基準にして参照できることを示しました。これには、コード内の変数値をどこにも表示しないという利点もあります。