【发布时间】:2022-01-12 13:41:49
【问题描述】:
我正在使用 VsCode 上的笔记本和 .env 文件处理一个 python 项目。 我在尝试刷新笔记本中的环境变量时遇到问题(我找到了一种方法,但它非常棘手)。
我的项目:
.env 文件:MY_VAR="HELLO_ALICE"
带有一个单元格的 test.ipynb 文件:
from os import environ
print('MY_VAR = ', environ.get('MY_VAR'))
我想要什么:
- 设置环境变量并运行我的笔记本(见 HELLO_ALICE)
- 编辑 .env 文件:将“HELLO_ALICE”更改为“HELLO_BOB”
- 设置环境变量并运行我的笔记本(见 HELLO_BOB)
什么不起作用:
- 在 vsCode 中打开我的项目,打开终端
- 在终端运行:
>> set -a; source .env; set +a; - 打开笔记本,运行单元格 --> 我看到了 HELLO_ALICE
- 编辑 .env(将 HELLO_ALICE 更改为 HELLO_BOB)
- 重启笔记本(点击重启或关闭选项卡并重新打开)
- 在终端运行:
>> set -a; source .env; set +a;(与第 2 步相同) - 打开笔记本,运行单元格 --> 我看到了 HELLO_ALICE
所以我看到两次 HELLO_ALICE 而不是 HELLO_ALICE 然后是 HELLO_BOB...
但如果它是在 .py 文件而不是笔记本上,它会起作用(我会先看到 HELLO_ALICE,然后是 HELLO_BOB)
让它发挥作用:
将第 5 步替换为:关闭 VsCode 并重新打开它
为什么会出现问题:
这非常棘手。我敢肯定,在 3 个月内,我会通过快速修复忘记这个问题,最终我会再次失去半天的时间来弄清楚问题和解决方案是什么。
所以我的问题是:
有谁知道它为什么会这样工作以及如何避免关闭和重新打开 VsCode 以刷新存储在笔记本上 .env 文件中的 env 变量?
(关闭和重新打开 VsCode 不应改变代码的行为)
注意事项:
- VsCode 版本 = 1.63.2
- 我厌倦了在笔记本中使用 dotenv 模块和加载 env 变量(不起作用)
- 问题:How to set env variable in Jupyter notebook 仅在您在笔记本中定义环境变量时才有效
- 这种行为只发生在环境变量上。例如,如果我使用 env.py 文件代替 .env 文件,我将我的 env 常量定义为 python 变量,重新启动笔记本将刷新常量。
【问题讨论】:
-
我刚才遇到了同样的问题。在github repo for vscode-jupyter 上创建问题可能是值得的
标签: python visual-studio-code jupyter-notebook environment-variables