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 条评论
登录 后参与评论

相关文章

来自专栏极客日常

快速安装 Helm

Helm 是 Kubernetes 的包管理器,可以帮我们简化 kubernetes 的操作,一键部署应用。假如你的机器上已经安装了 kubectl 并且能够操...

4883
来自专栏JadePeng的技术博客

Jhipster Registry(Eureka Server) Docker双向联通与高可用部署

构建Image并push到registry,这里是192.168.86.8:5000/registry-dev

1745
来自专栏xcywt

UNIX域协议(无名套接字)

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

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

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

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

1983
来自专栏向治洪

XMPP客户端库Smack 4.0.6版开发之二

XMPP客户端库Smack 4.0.6版开发之二 三、Smack库的特征 1、极度简单易用,API功能强大 发送一条文本消息给某个用户只需几行代码: Abst...

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

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

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

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

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

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

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

大量redo生成的问题原因及改进(r6笔记第50天)

接着上次分享的关于数据库无法登录的原因http://blog.itpub.net/23718752/viewspace-1791089/ 其实最终还是因为在短期...

2926
来自专栏码神联盟

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

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

3837
来自专栏程序猿DD

Spring Cloud构建微服务架构:分布式服务跟踪(入门)

通过之前的N篇博文介绍,实际上我们已经能够通过使用它们搭建起一个基础的微服务架构系统来实现我们的业务需求了。但是,随着业务的发展,我们的系统规模也会变得越来越大...

2924

扫码关注云+社区