我有一个问题,木星不能看到在 bashrc 文件中的 env 变量,有没有办法加载这些变量在木星或添加自定义变量到它?
您可以在代码中设置环境变量,如下所示:
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,更多的信息可以找到 给你
~.profile
如果你正在使用 Systemd,我刚刚发现你似乎必须将它们添加到 Systemd 单元文件中。这是在 Ubuntu 16上的。把它们放进。个人资料及。Bashrc (甚至/etc/profile)导致在 juypter 笔记本中不能使用 ENV Vars。
我不得不编辑:
/lib/systemd/system/jupyer-notebook.service
然后在单元文件中输入我想读取的变量,比如:
Environment=MYOWN_VAR=theVar
只有这样我才能从朱庇特笔记本里读出来。
要在一个 jupyter 笔记本中设置 env 变量,只需使用一个 %魔法命令,即 %env或 %set_env,例如 %env MY_VAR=MY_VALUE或 %env MY_VAR MY_VALUE。(单独使用 %env打印当前环境变量。)
%
%env
%set_env
%env MY_VAR=MY_VALUE
%env MY_VAR MY_VALUE
见: http://ipython.readthedocs.io/en/stable/interactive/magics.html
如果你需要的变量设置之前,你开始的笔记本,唯一的解决方案,为我是 env VARIABLE=$VARIABLE jupyter notebook与 export VARIABLE=value在 .bashrc。
env VARIABLE=$VARIABLE jupyter notebook
export VARIABLE=value
.bashrc
在我的例子中,张量流需要导出的变量来成功地导入到笔记本中。
一个相关的(短期)解决方案是将您的环境变量存储在一个单独的文件中,该文件具有可预测的格式,可以在启动终端和/或读入笔记本时获得。例如,我有一个文件 .env,它的环境变量定义格式为 VARIABLE_NAME=VARIABLE_VALUE(没有空行或额外的空格)。当开始一个新的终端会话时,你可以在 .bashrc或者 .bash_profile文件中找到这个文件的源代码,你可以把这个文件读入笔记本,
.env
VARIABLE_NAME=VARIABLE_VALUE
.bash_profile
import os env_vars = !cat ../script/.env for var in env_vars: key, value = var.split('=') os.environ[key] = value
我使用了一个相对路径来显示这个 .env文件可以存在于任何地方,并且相对于包含笔记本文件的目录被引用。这样做还有一个好处,就是不会在代码的任何位置显示变量值。
我遇到了一个陷阱: 以下两个命令是等价的。注意第一个 不能使用引号。有点违反直觉的是,在使用 %env VAR ...时引用字符串将导致引号作为变量值的一部分,这可能不是您想要的。
%env VAR ...
%env MYPATH=C:/Folder Name/file.txt
还有
import os os.environ['MYPATH'] = "C:/Folder Name/file.txt"
kernel.json
如果您每次启动一个 jupyter 内核时都需要相同的环境变量,我的解决方案非常有用,特别是如果您有多组用于不同任务的环境变量。
要使用环境变量创建一个新的 ipython 内核,请执行以下操作:
jupyter kernelspec list
python2
python2_myENV
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
如果使用 Python,可以在 .env文件中定义环境变量,并使用 巨蟒 -dotenv从 Jupiter 笔记本中加载它们。
安装 python-dotenv:
pip install python-dotenv
加载 .env文件到木星笔记本中:
%load_ext dotenv %dotenv
如果你的笔记本是由 Jupiter Hub 产生的,你可能需要配置(在 jupyterhub_config.py中)环境变量的列表,这些变量可以通过设置从 Jupiter Hub 进程环境传递到笔记本环境
jupyterhub_config.py
c.Spawner.env_keep = [VAR1, VAR2, ...]
(https://jupyterhub.readthedocs.io/en/stable/api/spawner.html#jupyterhub.spawner.Spawner.env_keep)
参见: Spawner.environment
Spawner.environment
你可以用 docker 运行 jupyter 笔记本,不必管理依赖性泄漏。
docker run -p 8888:8888 -v /home/mee/myfolder:/home/jovyan --name notebook1 jupyter/notebook docker exec -it notebook1 /bin/bash
然后问问朱庇特关于打开的笔记本, jupyter notebook list 令牌 = 012456788997977a6eb11e45fff Url 可以复制粘贴,如果您已经更改了端口,请验证端口。
jupyter notebook list
创建一个笔记本并粘贴以下内容, 放进笔记本里
!pip install python-dotenv import dotenv %load_ext dotenv %dotenv