python os.getenv()没有看到来自Jupyter笔记本的任何自定义变量(os x el capitan)

时间:2015-10-08 00:49:47

标签: python bash environment-variables jupyter

我在bash中声明了几个变量(通过〜/ .bash_profile),它们在bash本身以及在bash中启动的python中工作。

示例:

export PUIBy="Dropbox/CUSP/1_1_PUI/PUI_Bycicle_Research/"

然而,当我启动Jupyter笔记本时,os.environ没有看到任何一个,显示一些默认的变量列表(PWD,SUDO_USER,USERNAME,JPY_PARENT_PID,SSH_AUTH_SOCK,SUDO_UID,GIT_PAGER等)

我的系统是Mac OS El Captain,anaconda ipython 2.7

2 个答案:

答案 0 :(得分:1)

尝试使用env代替export

例如:

env PUIBy="Dropbox/CUSP/1_1_PUI/PUI_Bycicle_Research/" jupyter notebook

来源:link

答案 1 :(得分:0)

实际上这个问题与Jupyter无关。它与加载不同.bash文件的方式有关。

引用here

  对于登录shell执行.bash_profile,而为交互式非登录shell执行.bashrc。

     

当你通过控制台登录(输入用户名和密码)时,要么坐在机器上,要么通过ssh远程执行:.bash_profile执行以在初始命令提示符之前配置你的shell。

因为您将变量放入.bash_profile,它只能在终端shell中使用,但不能在非交互式shell中使用。

Jupyter-notebook是一个Web应用程序,即使它在本地计算机上运行,​​您也可以从本地计算机访问它(在大多数情况下)。每次打开笔记本时,它都会在自己的非交互式shell中启动内核。因此,如果您希望从shell中看到环境变量,请将它们放入.bashrc文件中,而不是.bash_profile

另外,要查看设置了哪些变量,请在Jupyter笔记本中使用!export命令