在Jupyter中通过BASH脚本设置环境变量

3

我试图在Jupyter笔记本中执行一个设置所需环境变量的BASH脚本。我知道魔术命令%env可以实现这一点,但在这种情况下需要使用BASH脚本。使用!source或%system都无法使环境变量在Jupyter笔记本中持久存在。是否有办法实现这个目标?


我不太清楚你所说的“persist”是什么意思。你是指它们在重新启动后保持设置吗?还是指它们在不同的笔记本之间保持设置?或者是指它们在一个单元格到另一个单元格之间保持设置?请问你想要做什么? - undefined
2个回答

1

要永久设置变量(例如一个键), 你可以在IPython启动目录创建或编辑启动配置文件, 为你的 Jupyter 笔记本设置 Bash 环境变量.

cd ~/.ipython/profile_default/startup/
vim my_startup_file.py

该文件将在Jupyter启动时运行(请参阅同一目录中的README)。以下是启动.py文件应包含的内容:

  1 import os
  2 os.environ['AWS_ACCESS_KEY_ID']='insert_your_key_here'
  3 os.environ['AWS_SECRET_ACCESS_KEY']='another_key'

现在在Jupyter笔记本中,您可以调用这些环境变量,例如:

#Inside a Jupyter Notebook cell
import os
session = boto3.session.Session( 
    aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'), 
    aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY'),
    region_name='us-east-1'
) 

更改后,您需要重新启动内核才能使其生效。


1
你可以使用Python来更新操作系统变量:

Cell

! echo "export test1=\"This is the test 1\"" > test.sh
! echo "export test2=\"This is the test 2\"" >> test.sh
! cat test.sh

结果

export test1="This is the test 1"
export test2="This is the test 2"

单元格(取自在Python脚本中设置环境变量

import os

with open('test.sh') as f:
    os.environ.update(
        line.replace('export ', '', 1).strip().split('=', 1) for line in f
        if 'export' in line
)

! echo $test1 
! echo $test2

结果

"This is the test 1"
"This is the test 2"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接