python项目简单实现自定义配置覆盖默认配置

可能项目中经常遇到,我需要再开发环境维护一份配置文件,等到了测试环境,我要更改默写配置项,而到了生产又需要更改某些设置项。这些设置项多了改起来就要来回翻代码,很不方便。下面用一种简单的方法简化这个逻辑,使得代码更改起来方便,自然,优雅。 比如,之前config.py中是这样的:

import uuid
DEBUG = True
HOST = “127.0.0.1”
PORT = 8080SCHEMA = f’http://{HOST}:{PORT}‘
CHECK_CODE_TEXT_DIR = “d:/checkCodeTxt/“
CHECK_CODE_IMG_DIR = “d:/checkCodeImg/“
TEMP_DIR = “d:/info/temp/“ + uuid.uuid4().hex + ‘/‘
LOG_DIR = “d:/info/log/“
COOKIE_DIR = “d:/info/cookie/“
CHROME_DRIVER_PATH = “d:/chromedriver.exe”
PHANTOMJS_PATH = r”D:\phantomjs-2.1.1-windows\bin\phantomjs.exe”
FLASH_VERSION = “26.0.0.137”
FLASH_PATH = r”C:\Windows\SysWOW64\Macromed\Flash\pepflashplayer32_26_0_0_137.dll”
UPLOAD_EXE_PATH = “d:/uploadImg.exe”

项目其他地方引用配置使用config.DEBUG这样引用。这里有一些东西上线需要更换,比如我要把debug改成False,把端口号改成5000,把

FLASH_PATH 这个地址更改成测试环境的,而其他项不需要变。 现在重构成这样。 新建文件config_default.py把原来config.py中的配置都移动过去, 然后新建config_override.py里面写环境特有的数据。 然后config.py写成这样:

from config_default import *
try:
    from config_override import *
except ImportError:
    pass

if name == ‘main‘:
    # 这里可以测试覆盖是否生效
    p‍rint(DEBUG)
    print(FLASH_PATH)
    print(CHECK_CODE_IMG_DIR)
    pri‍nt(PORT)

之前别的地方引用配置的方式还是config.DEBUG这样不变,即可。

原文发布于微信公众号 - python全栈布道师(gh_f7cbe2f9567b)

原文发表时间:2017-07-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

由报警邮件分析发现的备库oracle bug(r7笔记第12天)

昨天到公司之后,收到两份封报警邮件,可以看到在早晨6:30左右主库的v$dataguard_status检查时发现了一个错误。然后再2分钟后就自动恢复了。 一般...

27360
来自专栏cloudskyme

虚拟化平台cloudstack(8)——从UI开始

UI ucloudstack采用的是前后端分离的架构,就是说前端可以选择使用web、swing甚至其它的界面,都可以。 我们来看cloudstack的UI信息吧...

40260
来自专栏JadePeng的技术博客

jenkins X实践系列(2) —— 基于jx的DevOps实践

jx是云原生CICD,devops的一个最佳实践之一,目前在快速的发展成熟中。最近调研了JX,这里为第2篇,使用已经安装好的jx来实践CICD,旨在让大家了解基...

71820
来自专栏木子墨的前端日常

React Native 基础报错及解决方案记录

刚开始上手RN,碰到很多坑,记录一下。碰到问题多去看看github上面的issue!

28830
来自专栏xcywt

UNIX域协议(无名套接字)

关于什么是UNIX域套接字可以参考:https://cloud.tencent.com/developer/article/1018893 这里主要介绍非命名的...

20570
来自专栏一个会写诗的程序员的博客

8.2 Spring Boot集成Groovy、Grails开发小结参考资料

本章介绍Spring Boot集成Groovy,Grails开发。我们将开发一个极简版的pms(项目管理系统)。

19030
来自专栏菩提树下的杨过

spring cloud:Edgware.RELEASE版本hystrix超时新坑

升级到Edgware.RELEASE发现,zuul中不管如何设置hystrix的超时时间均不起作用,仍然是默认的1000ms.  降回低版本后正常,但是低版本的...

316100
来自专栏码神联盟

Spring Boot 入门篇---概念与hello word

Spring Boot是什么? 百度全科如此定义:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以...

39970
来自专栏SpringBoot 核心技术

第三十二章:如何获取SpringBoot项目的applicationContext对象

302110
来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》第8章 Spring Boot集成Groovy,Grails开发第8章 Spring Boot集成Groovy,Grails开发小结参考资料

本章介绍Spring Boot集成Groovy,Grails开发。我们将开发一个极简版的pms(项目管理系统)。

19520

扫码关注云+社区

领取腾讯云代金券