Eha*_*awy 55 python bash environment-variables jupyter-notebook
我有一个问题,Jupyter在bashrc文件中看不到env变量,有没有办法在jupyter中加载这些变量或者为它添加custom变量?
mic*_*ael 66
要在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
eva*_*n_b 20
我遇到的一个问题:以下两个命令是等效的。请注意,第一个不能使用引号。有点违反直觉,在使用时引用字符串%env VAR ...将导致引号被包含为变量值的一部分,这可能不是您想要的。
%env MYPATH=C:/Folder Name/file.txt
Run Code Online (Sandbox Code Playgroud)
和
import os
os.environ['MYPATH'] = "C:/Folder Name/file.txt"
Run Code Online (Sandbox Code Playgroud)
kar*_*daj 16
您可以在代码中设置环境变量,如下所示:
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')
Run Code Online (Sandbox Code Playgroud)
这当然是一个临时修复,为了得到一个永久的,你可能需要将变量导出到你的~.profile,更多的信息可以在这里找到
Ber*_*ard 13
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":""}
}
Run Code Online (Sandbox Code Playgroud)
LD_LIBRARY_PATH,该变量影响如何加载已编译模块(例如,用C编写)。使用设置此变量%set_env无效。如果您使用的是Python,则可以在.env文件中定义环境变量,然后使用python-dotenv从Jupyter笔记本中加载它们。
安装python-dotenv:
pip install python-dotenv
Run Code Online (Sandbox Code Playgroud)
将.env文件加载到Jupyter笔记本中:
%load_ext dotenv
%dotenv
Run Code Online (Sandbox Code Playgroud)
如果在启动笔记本之前需要设置变量,唯一对我有用的解决方案是env VARIABLE=$VARIABLE jupyter notebook使用export VARIABLE=valuein .bashrc。
在我的例子中,tensorflow 需要导出的变量才能成功地将它导入到笔记本中。
小智 6
一个相关的(短期)解决方案是将环境变量存储在一个具有可预测格式的文件中,可以在启动终端和/或读入笔记本时获取该文件。例如,我有一个文件 ,.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
Run Code Online (Sandbox Code Playgroud)
我使用相对路径来表明该.env文件可以存在于任何地方,并且可以相对于包含笔记本文件的目录进行引用。这还有一个优点:不在代码中的任何地方显示变量值。