[英]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.