python-dotenv的详细用法

简介

  • 项目地址:https://github.com/theskumar/python-dotenv

首先看一下github上项目的介绍:

Reads the key,value pair from .env and adds them to environment variable.

大概意思就是在我们做项目时,我们可以把所有用到的环境变量写到.env文件里,然后以k,v的方式读取作为环境变量。

扩展阅读12-factors

用法

最简单和最常见的用法是在应用程序启动时调用load_dotenv,从当前目录或其父目录中的.env文件或指定的路径加载环境变量,然后你可以调用os.getenv提供的与环境相关的方法。

.env 文件内容写法

.env 文件内容差不多是这样的:

# a comment that will be ignored.
REDIS_ADDRESS=localhost:6379
MEANING_OF_LIFE=42
MULTILINE_VAR="hello\nworld"

你可以使用单词export作为每行的前缀,这将会使python-dotenv 忽略该变量,但是你可以使用 source 命令运行该文件。

python-dotenv 可以用来修改 POSIX系统的环境变量.

变量的值是下面列表中定义的第一个值:

  • 系统环境变量
  • .env 文件中定义的值
  • 默认值,如果有的话
  • 空字符串

确保引用其他变量时用大括号{}包围,就像${HOME},因为像$HOME这样的字符串不会被认为是变量的引用。

CONFIG_PATH=${HOME}/.config/foo
DOMAIN=example.org
EMAIL=admin@${DOMAIN}
DEBUG=${DEBUG:-false}

项目中使用

安装

pip install -U python-dotenv

基本用法

确保你的项目目录下 有 .env 文件

.
├── .env
└── settings.py

然后你可以在settings.py中添加以下代码:

# settings.py
from dotenv import load_dotenv, find_dotenv
from pathlib import Path  # Python 3.6+ only

# 一、自动搜索 .env 文件
load_dotenv(verbose=True)


# 二、与上面方式等价
load_dotenv(find_dotenv(), verbose=True)

# 三、或者指定 .env 文件位置
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path, verbose=True)

通过load_dotenv ,你就可以访问像访问系统环境变量一样使用.env文件中的变量了,比如通过 os.genenv(key, default=None)

# settings.py
import os
SECRET_KEY = os.getenv("EMAIL")
DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD")
参数
  • dotenv_path: 指定.env文件路径,当然如果不传该参数的话(默认为None)也会自定调用dotenv.find_dotenv()去查找文件位置的,但是你的文件名如果不是.env那就必须传递该参数了

  • override: 当.env 文件中有变量与系统中原来的环境变量有冲突时,按照上面的取值顺序,默认使用系统变量,如果要用.env中的变量覆盖系统变量,可以给load_dotenv() 传递参数override=True此时只是临时使用了.env 中的变量值

  • encoding: load_dotenv() 也可以传递encoding 参数指定文件的编码方式。

从流对象加载

从可读的流对象中加载,记得把读指针调到要开始读取的位置。

>>> from io import StringIO     # Python2: from StringIO import StringIO
>>> from dotenv import dotenv_values
>>> filelike = StringIO('SPAM=EGGS\n')
>>> filelike.seek(0)
>>> parsed = dotenv_values(stream=filelike)
>>> parsed['SPAM']
'EGGS'

注意:此时返回值是个字典

Django

如果你在Django中使用,请将以上代码添加到 wsgi.py 或者 manage.py.

IPython 支持

  1. 加载扩展
%load_ext dotenv
  1. 加载 env文件
%dotenv

或者指定一个env文件

%dotenv relative/or/absolute/path/to/.env
  1. 其他参数
  • -o:即override 覆盖原有变量
%dotenv -o
  • -v:输出提示信息
%dotenv -v

配置远程服务器

Fabric 配合使用

  • 14
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ERROR: Could not find a version that satisfies the requirement python-dotenv (from versions: none) 是一个错误提示,意味着无法找到适合的python-dotenv版本。这可能是由于以下原因之一导致的: - 您的python-dotenv版本太旧,不与您当前使用的Python版本兼容。 - 在您使用的Python环境中没有安装python-dotenv。 为了解决这个问题,您可以尝试以下几种方法: 1. 确保您的Python环境已经安装了python-dotenv。可以使用以下命令来安装最新版本的python-dotenv: ``` pip install python-dotenv ``` 2. 如果您已经安装了python-dotenv,但仍然遇到问题,请确保您的python-dotenv版本与您当前使用的Python版本兼容。您可以通过在命令行中输入以下命令来检查python-dotenv版本: ``` pip show python-dotenv ``` 确保版本号与您当前使用的Python版本兼容。 3. 如果上述方法仍然无法解决问题,您可以尝试升级您的Python版本。使用较新的Python版本可能会提供对最新软件包的支持。 通过执行上述步骤,您应该能够解决ERROR: Could not find a version that satisfies the requirement python-dotenv (from versions: none)的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [bitvarybot:Upbit波动性突破](https://download.csdn.net/download/weixin_42100971/15559891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)解决方案](https://blog.csdn.net/weixin_43178406/article/details/130536747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值