【问题标题】:Question about os.environ.get : VSCode Debug Mode V.S. directly run with python关于 os.environ.get 的问题:VSCode 调试模式 V.S.直接用python运行
【发布时间】:2018-08-31 03:08:56
【问题描述】:

我知道模块os 以及如何使用os.environ.get('a', 'b')It will catch current environment variable 'a', if not exists will default to 'b'.

但是今天我有一个小问题。这是我关于这个问题的小项目:

.vscode/
    launch.json
.env
runme.py

对于 runme.py

import os

vv = os.environ.get('SETTINGS', 'Nothing')

print(vv)

.env 文件也很简单,比如 runme.py

SETTINGS = proj.settings.local

launch.json 中,关注Python debugging configurations in VS Code

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/runme.py"
        }
    ]
}

然后,按F5,我看到了我希望在内部终端

中看到的内容
>cd d:\tmp\tt && cmd /C "set "SETTINGS=proj.settings.local" && set "PYTHONIOENCODING=UTF-8" && set "PYTHONUNBUFFERED=1" && python c:\Users\tony\.vscode\extensions\ms-python.python-2018.7.1\pythonFiles\PythonTools\visualstudio_py_launcher.py d:\tmp\tt 62502 34806ad9-833a-4524-8cd6-18ca4aa74f14 RedirectOutput,RedirectOutput D:\tmp\tt/runme.py " 
proj.settings.local

但是当我在 COMMAND LINE python runme.py 中运行命令时,我看到 COMMAND LINE 中打印了“Nothing”。为什么?

那是 IDE(例如:VSCode)为我做的吗?或者我对os module 有什么误解?请给我解释一下。

【问题讨论】:

    标签: visual-studio-code anaconda python-3.6


    【解决方案1】:

    这似乎是problem with VS Code。似乎 .env 文件被评估并应用于终端的方式不是很一致和可预测的。

    在我的测试过程中,.env 文件只会被拾取,如果你使用调试功能(快捷键 F5 或 Ctrl+F5)。这导致 .env 的内容被注入到终端会话中。在您关闭该终端之前,如果从该终端启动,您在那里定义的变量将可用于您的程序的任何连续运行。您打开的任何新终端(即使它是 VS Code 中的新终端)都无法访问这些变量。

    如果您希望终端中的环境变量始终可用,您可以在操作系统级别设置该环境变量。在 Windows 下,使用 System Properties / Environment Variables... 并将其放在 User variables 或 System variables 下,具体取决于您的需要。在 Linux 下,把它放在你的 shell .rc 文件中。 请注意,您必须重新启动 VS Code 才能使更改生效。

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2019-05-22
      • 2011-09-13
      相关资源
      最近更新 更多