可能项目中经常遇到,我需要再开发环境维护一份配置文件,等到了测试环境,我要更改默写配置项,而到了生产又需要更改某些设置项。这些设置项多了改起来就要来回翻代码,很不方便。下面用一种简单的方法简化这个逻辑,使得代码更改起来方便,自然,优雅。 比如,之前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‘:
# 这里可以测试覆盖是否生效
print(DEBUG)
print(FLASH_PATH)
print(CHECK_CODE_IMG_DIR)
print(PORT)
之前别的地方引用配置的方式还是config.DEBUG这样不变,即可。