我有一个问题,Jupyter在bashrc文件中看不到env变量,有没有办法在jupyter中加载这些变量或向其中添加自定义变量?
我有一个问题,Jupyter在bashrc文件中看不到env变量,有没有办法在jupyter中加载这些变量或向其中添加自定义变量?
Answers:
要在jupyter笔记本中设置env变量,只需使用%
魔术命令%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可能看起来像这样(除了display_name
和,我没有对已安装的kernel.json进行任何修改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
事先设置,否则Homebrew的Python会覆盖,除非您必须在python运行之前进行设置。
如果您使用的是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
应该是这个问题的正确答案
一个相关的(短期)解决方案是将环境变量存储在一个可预测格式的单个文件中,该文件可在启动终端和/或读入笔记本时获取。例如,我有一个文件,.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
文件可以存在于任何位置,并且可以相对于包含笔记本文件的目录进行引用。这也具有不在代码中的任何位置显示变量值的优点。