python中环境变量的使用
前言
之前就经常用,今天来凑个篇数.
在开发的过程中,我们经常会将代码中某些可能更改的,比如redis地址,数据库地址,限流阈值等参数写活来提高灵活性,
传统的方式可能是写在配置文件中,比如 xml yml 等文件中解析.
但这种文件的方式配合 Docker 使用较为麻烦,
于是,将配置写入环境变量的方式逐渐流行起来,这种方式更适合 Docker 使用
本文介绍如何在Python中实现环境变量的插入与读取
正文
插入环境变量
.env文件
当然,在读取之前需要插入环境变量,这一步可以由 Docker 解决,但是在开发中我们一般不会使用 Docker 打包后再测试
一般的,我们会在项目的根目录新建一个 .env 文件,里面保存在项目启动前需要写入的环境变量,我们在测试时可先插入环境变量来完成配置写入
.env 文件大致如下

其实就是每行为一个要插入的变量, 结构为 k=v
注意环境变量写入的都是字符串,不存在别的类型
同时还要注意避免与系统自带的环境变量冲突,比如系统变量已经有了 path 而你自定义也叫 path 可能会因为覆盖而出现混乱
所以在设置环境变量时一般会在最前面加上该项目代号,比如上图项目叫 CHAOS
环境变量k一般全部大写
写入环境变量
使用os与sys模块可以实现单条导入,但是一个文件需要自己手动实现,而有其他模块可以帮助我们解决
GitHub
pip install python-dotenv
我们一般在项目开始读取配置文件,所以测试时在读取之前写入一遍
比如在启动文件 main.py 中调用 config.py 读取配置, 那么在 config.py 开头先读取 .env 文件并用 dotenv 模块写入

以上代码可导入 config.py 上一级目录的 .env 文件写入环境变量(实际目录结构的更改影响此代码)
读取环境变量
环境变量的读取直接使用 os 模块即可

python中环境变量的使用的更多相关文章
- 将python文件加入到python的环境变量中
在python中,把一个python文件加入到python环境变量中,以方便其他python文件调用.有两种方式,下面对其进行简单的介绍 方式一: 导入系统自带的sys模块,然后将文件的路径进行追加或 ...
- python 获取环境变量
python 获取环境变量 参考 https://docs.python.org/2/library/os.html 使用os.environ获取环境变量字典 import os env_dist = ...
- Python中的变量和常量
本文主要介绍Python中的变量和常量,包括变量的命名规范,使用注意事项 -------------- 完美的分割线 --------------- 1.变量 1.1.变量理解 1)什么是变量 变量即 ...
- python 读取环境变量
python 读取环境变量 前言 在使用python时候千万不要把账户密令直接写入脚本,特别是当你计划开源自己的作品时. 为了保护账户信息,你需要让脚本从环境中导入敏感信息. 读取方法 import ...
- Linux中环境变量文件及配置
Linux中环境变量文件及配置 一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统 ...
- Linux中环境变量文件及配置(转载)
一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...
- python中的变量和数据类型
一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...
- Python中的变量、引用、拷贝和作用域
在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...
- Linux中环境变量中文件执行顺序
Linux 的变量可分为两类:环境变量和本地变量 环境变量:或者称为全局变量,存在于所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux 的环境变量具有 ...
随机推荐
- 手动 jq 触发 动态的 layui select change 事件
var s= $('#province').val(); //先获取 默认选中的第一个 option 的值 ( value) var select = 'dd[lay-value=' + s ...
- 【题解】「CF1182B」Plus from Picture
这是一道超级水的模拟 + 简单搜索. 说说思路: 先找到中心点,就是自己和上下左右都为 * 的. 上下左右上的所有 * 都删掉,然后再看看有没有多余的 * 如果有输出 NO 否则输出 YES. 比如说 ...
- CSS知识点记录
1.浏览器style中显示的样式 这里面的样式,是行内样式或者是使用js添加的样式
- 高速缓冲存储器Cache
目录 概述 问题的提出 局部性原理 命中与未命中 Cache的命中率 Cache-主存系统的效率 例题 工作原理 地址映射方式(本节最重要) 直接映射 全相联映射 组相联映射 例子 替换策略 例题 写 ...
- Oracle数据泵常用命令
导读:expdp和impdp是oracle数据库之间移动数据的工具,本文简单总结了数据泵的常用命令,希望对大家有帮助. 前言 expdp和impdp是oracle数据库之间移动数据的工具.expd ...
- AWT10-位图
1.概述 Graphics提供了drwaImage(Image image)来绘制位图,该方法需要一个位图做参数. 步骤: 1.创建Image的子类对象BufferedImage(int width, ...
- SpringCloud 源码系列(4)—— 负载均衡 Ribbon
一.负载均衡 1.RestTemplate 在研究 eureka 源码上篇中,我们在 demo-consumer 消费者服务中定义了用 @LoadBalanced 标记的 RestTemplate,然 ...
- 冰河,能不能讲讲如何实现MySQL数据存储的无限扩容?
写在前面 随着互联网的高速发展,企业中沉淀的数据也越来越多,这就对数据存储层的扩展性要求越来越高.当今互联网企业中,大部分企业使用的是MySQL来存储关系型数据.如何实现MySQL数据存储层的高度可扩 ...
- js 点击按钮下载图片,另存为
js: 1 $(document).on('click',"#xiazai",function(){ 2 imgurl = $(".img-box").find ...
- 阿里云Centos7.6上面部署基于redis的分布式爬虫scrapy-redis将任务队列push进redis
Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取.但是当我们要爬取的页面非常多的时候,单个服务器的处理能力就不能满足我们的需求了(无论是处理速度还是网络请 ...