我试图在Jupyter笔记本中执行一个设置所需环境变量的BASH脚本。我知道魔术命令%env可以实现这一点,但在这种情况下需要使用BASH脚本。使用!source或%system都无法使环境变量在Jupyter笔记本中持久存在。是否有办法实现这个目标?
我试图在Jupyter笔记本中执行一个设置所需环境变量的BASH脚本。我知道魔术命令%env可以实现这一点,但在这种情况下需要使用BASH脚本。使用!source或%system都无法使环境变量在Jupyter笔记本中持久存在。是否有办法实现这个目标?
要永久设置变量(例如一个键), 你可以在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'
)
更改后,您需要重新启动内核才能使其生效。
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"