繁体   English   中英

为什么我无法在 vscode python 中访问我的环境变量 from.env 文件?

[英]Why I can't access my environment variable from .env file in vscode python?

我真的是这个领域的新手,如果我的问题不好或者我问新手问题,我很抱歉。 也在此先感谢回复者!

我想做什么? 我正在尝试从 .env 文件访问我的环境变量并在终端中打印它的值。

问题是什么? 当我在终端中运行脚本时,我一直收到错误none

我检查了几个论坛和关于这个问题的 dotenv 论文,但没有人帮助我解决这个问题

更多信息:

我正在使用 windows 10

dotenv的版本是0.20.0

我使用python -m pip install python-dotenv下载了它

代码

.env 文件 - export PRIVATE_KEY = 0xc3c4e4fe27d8e6b06710e713878e4488c034ce346a578fdfa78bb3d335130eec

python 文件 -

from dotenv import load_dotenv

 import os

 load_dotenv()

 print(os.getenv("PRIVATE_KEY"))










首先感谢您的回复! 没想到不到 24 小时就有答复,感觉真好。

所以我解决了我的问题,但不是在删除 .env 文件中的“导出”之后(我尝试使用和不使用它都在终端中给出了相同的结果),我必须指定 .env 文件的完整路径在 load_dotenv() 中,显然我必须指定它,但我在论坛中看到的许多代码示例不需要这样做我想知道为什么......

无论如何,这是新代码...

蟒蛇代码 -

在此处输入图像描述

.env 文件 -

在此处输入图像描述

顺便说一句,它不是真正的私钥

我还不会关闭这个线程,我仍然有一个关于这个问题的问题,因为帮助我解决这个问题是更多的运气......我不想看到这个问题在未来再次出现,所以如果有人能回答我的问题就好了!

在我找到解决方案之前的某个时间点,我在终端中运行了 python 脚本并获得了一个随机私钥(我没有悲伤地描绘它),它可能是我过去设置的一个密钥,但后来我检查了我是否文件夹中有其他 .env 文件,但我没有 我在 Windows 上的系统属性 > 高级 > 环境变量中也没有任何环境变量,那么 dotenv 在哪里通过 dafault 获取键值? 之后我重新打开vscode并再次尝试,但我none错误......

您可以在launch.json文件中设置envfile节点,指向您的.env文件(使用绝对路径)。

然后按F5调试代码,或者选择左侧的 Run and Debug 图标后单击绿色三角形按钮。

在此处输入图像描述

下面是我的代码示例以及输出。

项目结构:

在此处输入图像描述

启动.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "envFile": "C:\\WorkSpace\\pyenv\\py.env",

            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

py.env:

PRIVATE_KEY = 123456789abcdefghijklmn

测试.py:

import os

print(os.getenv("PRIVATE_KEY"))

终端输出:

在此处输入图像描述

更新:

dotenv获取.env文件中的环境变量。 如果您将项目中的py.env文件名更改为.env 那么您在问题中显示的代码将成功运行而无需任何更改。

在此处输入图像描述

如果所有解决方案都不起作用,并且您的 .env 文件仍然不起作用,这里有一个解决方法:

将以下行添加到主例程的顶部(如果需要它们进行测试,则添加到 conftest.py)。

此代码将读取您的 .env 文件并创建您的环境变量:

# Workaround for .env file not working
temp_res = os.getenv("SOME_VARIABLE", "") # Try to read an env variable
if temp_res == "": # Nope, .env file settings are not present
    # Manually load environment variables
    with open(os.path.expanduser("~/path/on/my/laptop/my_env_file.env")) as env_file:
        for line in env_file:
            lhs = line.split("=")[0]
            rhs = line.split("=")[1]
            os.environ[lhs]=rhs.strip()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM