jupyter怎么配置python_python-如何在Jupyter noteb中设置环境变量

python-如何在Jupyter noteb中设置环境变量

我有一个问题,Jupyter在bashrc文件中看不到env变量,有没有办法在jupyter中加载这些变量或向其中添加自定义变量?

8个解决方案

62 votes

要在jupyter笔记本中设置env变量,只需使用274870392321631919488魔术命令,例如274870392321631919489或%set_env490,例如%env MY_VAR=MY_VALUE949或%env MY_VAR MY_VALUE.(可单独使用%env MY_VAR=MY_VALUE9493打印当前环境变量。)

参见:[http://ipython.readthedocs.io/en/stable/interactive/magics.html]

michael answered 2020-02-15T13:27:10Z

15 votes

您可以按照以下步骤在代码中设置环境变量:

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中,有关更多信息,请参见此处。

kardaj answered 2020-02-15T13:27:35Z

8 votes

您还可以在LD_LIBRARY_PATH文件中设置变量:

如果每次启动jupyter内核时都需要相同的环境变量,特别是如果您有多组环境变量用于不同的任务,则我的解决方案很有用。

要使用环境变量创建新的ipython内核,请执行以下操作:

阅读[https://jupyter-client.readthedocs.io/en/stable/kernels.html#kernel-specs]上的文档

运行LD_LIBRARY_PATH以查看包含已安装内核以及文件存储位置的列表。

将包含kernel.json的目录(例如名为LD_LIBRARY_PATH)复制到新目录(例如2748704777780593593665)。

在新的%set_env文件中更改LD_LIBRARY_PATH。

添加一个LD_LIBRARY_PATH字典,用于定义环境变量。

您的内核json可能看起来像这样(除了LD_LIBRARY_PATH和%set_env外,我没有对已安装的kernel.json进行任何修改):

{

"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设置此变量无效。

我可以在不同的环境中使用多个python内核。

要更改环境,我只需要切换/重新启动内核,而不必重新启动jupyter实例(很有用,如果我不想在另一个笔记本中松开变量)。 参见-但是-[https://github.com/jupyter/notebook/issues/2647]

Bernhard answered 2020-02-15T13:28:51Z

8 votes

如果您使用的是Python,则可以在.env文件中定义环境变量,然后使用python-dotenv从Jupyter笔记本中加载它们。

安装python-dotenv:

pip install python-dotenv

在Jupyter笔记本中加载.env文件:

%load_ext dotenv

%dotenv

aparkerlue answered 2020-02-15T13:29:20Z

2 votes

如果在启动笔记本电脑之前需要变量集,那么对我有用的唯一解决方案是env VARIABLE=$VARIABLE jupyter notebook和.bashrc中的export VARIABLE=value。

在我的情况下,tensorflow需要导出的变量才能成功将其导入到笔记本中。

Baschdl answered 2020-02-15T13:29:44Z

1 votes

如果您使用的是systemd,我刚刚发现您似乎必须将它们添加到systemd单元文件中。 这在Ubuntu 16上。将它们放入.profile和.bashrc(甚至/ etc / profile)中,导致juypter笔记本中不提供ENV Vars。

我不得不编辑:

/lib/systemd/system/jupyer-notebook.service

并放入我想在单位文件中读取的变量,例如:

Environment=MYOWN_VAR=theVar

只有这样,我才能从jupyter笔记本中阅读它。

Andy D answered 2020-02-15T13:30:18Z

1 votes

我遇到了一个陷阱:以下两个命令是等效的。 请注意,第一个不能使用引号。 有点违反直觉的,使用%env VAR ...时引用字符串会导致引号包含在变量值中,这可能不是您想要的。

%env MYPATH=C:/Folder Name/file.txt

import os

os.environ['MYPATH'] = "C:/Folder Name/file.txt"

evan_b answered 2020-02-15T13:30:42Z

0 votes

一个相关的(短期)解决方案是将环境变量存储在一个具有可预测格式的单个文件中,该文件可在启动终端和/或读入笔记本时获取。 例如,我有一个文件.env,该文件的环境变量定义的格式为.env(没有空白行或多余的空格)。 开始新的终端会话时,您可以在.bashrc或.bash_profile文件中获取此文件,并且可以使用类似以下内容的内容将其读入笔记本,

import os

env_vars = !cat ../script/.env

for var in env_vars:

key, value = var.split('=')

os.environ[key] = value

我使用相对路径显示此.env文件可以存在于任何位置,并且可以相对于包含笔记本文件的目录进行引用。 这也具有不在代码内的任何位置显示变量值的优点。

wingr answered 2020-02-15T13:31:08Z

你可能感兴趣的:(jupyter怎么配置python_python-如何在Jupyter noteb中设置环境变量)