我有一个问题,就是Jupyter无法在bashrc文件中看到环境变量。有没有一种方法可以在jupyter中加载这些变量或者添加自定义变量?
我有一个问题,就是Jupyter无法在bashrc文件中看到环境变量。有没有一种方法可以在jupyter中加载这些变量或者添加自定义变量?
%env
或%set_env
,例如:%env MY_VAR = MY_VALUE
或%env MY_VAR MY_VALUE
。(仅使用%env
本身可以打印当前环境变量。)请参见:http://ipython.readthedocs.io/en/stable/interactive/magics.htmlkernel.json
文件中设置变量:如果您每次启动jupyter内核都需要相同的环境变量,尤其是如果您有多个不同任务的环境变量集,则我的解决方案非常有用。
要使用您的环境变量创建一个新的IPython内核,请执行以下操作:
jupyter kernelspec list
以查看已安装内核的列表以及文件所存储的位置。python2
)复制到新目录(例如python2_myENV
)中。kernel.json
文件中的display_name
。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。 - Khurram Majeedsys.executable
,除非事先设置了 PYTHONEXECUTABLE
,而这必须在 Python 运行之前设置。 - Stefan Dragnev"env": {"LD_LIBRARY_PATH":"/opt/miniconda3/envs/tensorflow/lib:${LD_LIBRARY_PATH}"}
。 - Gustavo Seabrakernel.json
文件时遇到了一些问题,最终解决方法是在工作区根目录下创建一个 .env
文件,并在其中设置 LD_LIBRARY_PATH=...
。 - Igor Kołakowski.env
文件中定义您的环境变量,并使用python-dotenv从Jupyter笔记本中加载它们。pip install python-dotenv
在 Jupyter Notebook 中加载 .env
文件:
%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
的回答应该是这个问题的正确答案。 - Sida Zhou我遇到的一个陷阱:下面两个命令是等价的。请注意第一个不能使用引号。有点违反直觉的是,当使用%env VAR ...
时,对字符串进行引用将导致引号包括在变量的值中,这可能不是您想要的。
%env MYPATH=C:/Folder Name/file.txt
和
import os
os.environ['MYPATH'] = "C:/Folder Name/file.txt"
env VARIABLE=$VARIABLE jupyter notebook
命令,并在.bashrc
文件中使用export VARIABLE=value
命令。在我的情况下,TensorFlow需要这个导出的变量才能在笔记本中成功导入它。一个相关的(短期)解决方案是将您的环境变量存储在一个单独的文件中,具有可预测的格式,在启动终端和/或读入笔记本时可以被调用。例如,我有一个名为.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
文件可以存储在任何地方,并且可以相对于包含笔记本文件的目录引用。这样做的好处是不会在代码中显示变量的值。c.Spawner.env_keep = [VAR1, VAR2, ...]
(https://jupyterhub.readthedocs.io/en/stable/api/spawner.html#jupyterhub.spawner.Spawner.env_keep)
参见:{{link1:Spawner.environment
}}
/lib/systemd/system/jupyer-notebook.service
然后将我想要在单元文件中读取的变量放入其中,如:
Environment=MYOWN_VAR=theVar
您可以使用Docker运行Jupyter Notebook,而无需管理依赖关系泄漏。
docker run -p 8888:8888 -v /home/mee/myfolder:/home/jovyan --name notebook1 jupyter/notebook
docker exec -it notebook1 /bin/bash
请询问Jupyter打开的笔记本情况,
jupyter notebook list
可以复制并粘贴URL,如果您已更改端口,请验证端口。
创建一个笔记本,并将以下内容粘贴到笔记本中:
!pip install python-dotenv
import dotenv
%load_ext dotenv
%dotenv
os.environ[var] = val
:https://github.com/ipython/ipython/blob/master/IPython/core/magics/osm.py#L430 - evan_b