基于django environ的os.environ代理
musette的Python项目详细描述
musette通过提供 os.environ允许:
- 环境值的类型转换
- 通过明文键值属性文件更新环境
- 壳式插值
musette是django-environ的一个直接分支,具有显著的变化。 尽管它是为django设置配置而设计的,但实际上并不是 需要Django自己。
原始模块(django-environ)是:
基本用法
from musette import environ environ.read('env.properties') DEBUG = environ.bool("DEBUG")
django设置
这是安装musette之前的设置.py文件:
DEBUG = True TEMPLATE_DEBUG = DEBUG DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'database', 'USER': 'user', 'PASSWORD': 'githubbedpassword', 'HOST': '127.0.0.1', 'PORT': '8458', } 'extra': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'database.sqlite' } } SECRET_KEY = 'notsecret' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '127.0.0.1:11211', '127.0.0.1:11212', '127.0.0.1:11213', ] }, 'redis': { 'BACKEND': 'redis_cache.cache.RedisCache', 'LOCATION': '127.0.0.1:6379:1', 'OPTIONS': { 'CLIENT_CLASS': 'redis_cache.client.DefaultClient', 'PASSWORD': 'redis-githubbed-password', } } }
之后:
from musette import Environment env = Environment(DEBUG=(bool, False),) env.read('env.properties') DEBUG = env('DEBUG') # False if not in os.environ TEMPLATE_DEBUG = DEBUG DATABASES = { 'default': env.db(), 'extra': env.db('SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db') } SECRET_KEY = env('SECRET_KEY') CACHES = { 'default': env.cache(), 'redis': env.cache('REDIS_URL') }
属性文件
属性或“env”文件是包含一个或多个 key:=值或key=value行,其中值可以是可选的 通过shell样式变量参考其他环境值:
that := something this := ${that}
如何安装
$ pip install musette
如何使用
有一个Environment类和该类的方便实例 调用environ:
>>> from musette import Environment >>> env = Environment( DEBUG=(bool, False), ) >>> env('DEBUG') False >>> env('DEBUG', default=True) True >>> open('.myenv', 'a').write('DEBUG=on\n') >>> env.read('.myenv') >>> env('DEBUG') True >>> open('.myenv', 'a').write('INT_VAR=1010\n') >>> env.read('.myenv') >>> env.int('INT_VAR'), env.str('INT_VAR') 1010, '1010' >>> open('.myenv', 'a').write('DATABASE_URL=sqlite:///my-local-sqlite.db\n') >>> env.read('.myenv') >>> env.db() {'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'my-local-sqlite.db', 'HOST': '', 'USER': '', 'PASSWORD': '', 'PORT': ''}
Environment默认情况下为^{tt2}提供有效的代理$ 数据字典,但您可以传入任何其他dict:
>>> from musette import Environment >>> _environ = {} >>> env = Environment(_environ, DEBUG=True) >>> _environ['DEBUG'] True
如果既不传入配置dict,也不传入任何模式值,则 您可以使用environ实例:
>>> import os >>> from musette import environ >>> set(os.environ.keys()) == set(environ.keys()) True
支持的类型
- str
- 布尔
- 内景
- 浮动
- json
- 列表(foo=a,b,c)
- dict(bar=key=val;foo=bar)
- 网址
- 数据库URL
- PostgreSQL:^{TT9}$,^{TT10}$,^{TT11}$或^{TT12}$
- 邮政编码:^{TT13}$
- mysql:mysql://或mysql2://
- 用于geodjango的mysql:mysqlgis://
- sqlite:sqlite://
- Geodjango的含Spatialite的Sqlite:^{TT18}$
- LDAP:^{TT19}$
- 缓存URL
- 数据库:dbcache://
- 虚拟:dummycache://
- 文件:filecache://
- 内存:locmemcache://
- memcached:memcache://
- python内存:pymemcache://
- redis:rediscache://
- 搜索URL
- 弹性搜索:^{TT27}$
- 溶液:solr://
- 呼:whoosh://
- 简单缓存:simple://
- 电子邮件地址
- SMTP:^{TT31}$
- smtps:smtps://
- 控制台邮件:consolemail://
- 文件邮件:filemail://
- locmem邮件:memorymail://
- 虚拟邮件:dummymail://
测试
$ git clone git@github.com:averagehuman/musette.git $ cd musette $ python setup.py test