You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter Notebook中读取命令行定义的变量?

问题原因

你遇到的现象是Jupyter魔术命令的运行机制导致的:
%%system(和!开头的单行shell命令)运行时会启动独立的子shell进程,你在这个shell中设置的环境变量仅在当前子shell的生命周期内有效,命令执行完成后子shell直接销毁,变量不会同步到Jupyter的Python内核运行环境中,因此后续单元格用os.environ读取不到对应变量。
而sys.argv存储的是Jupyter内核启动时传入的命令行参数,和单元格内运行的shell命令没有关联,自然也不会返回你自定义的变量。

可用解决方案
  • 方案1:直接捕获shell命令的输出存为Python变量
    如果你只是需要把shell的运行结果保存到Python变量中,直接用!魔术命令的返回值即可,示例:
# 直接执行shell命令,返回的结果是每行输出组成的列表
shell_output = !bash -c "testvar='testing'; echo \$testvar"
mypyvar = shell_output[0]
print(mypyvar)
  • 方案2:用%env魔术命令设置全局环境变量
    如果你需要设置的环境变量要同时被后续的Python代码和shell命令读取,可以直接用Jupyter内置的%env命令:
# 直接赋值
%env testvar=testing

# 也可以读取shell命令的输出赋值
%env testvar=$(echo 'testing')

设置完成后,在任意单元格都可以直接读取:

import os
print(os.environ['testvar'])
  • 方案3:直接通过Python代码设置环境变量
    如果不需要走shell设置,直接修改os.environ就可以作用于当前内核的所有后续单元格:
import os
os.environ['testvar'] = 'testing'

内容的提问来源于stack exchange,提问作者user3486773

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:00:06