编译时的python配置

python configuration at compile time

到目前为止,我们有一个文件conf.py,它存储了服务的大部分配置变量。我们有类似的代码:

1
2
3
4
5
6
7
8
9
environment = 'dev' # could be dev, local, staging, production
configa = 'something'
configb = 'something else'

if environment = 'dev':
    configa = 'something dev'

elif environment = 'local':
    configa = 'something local'

这是在Python项目中管理配置文件的正确方法吗?这些配置是在编译时(创建pyc文件时)加载到变量中的,还是每次在python脚本中导入conf时都检查if条件,还是每次访问配置变量时都检查if条件?


这是主观的,但在本文中有一个很好的讨论:在Python中使用设置文件的最佳实践是什么?

使用您的方法,它将像其他任何Python脚本一样被处理,即在导入时。如果希望在访问/或不重新启动服务时对其进行更新,最好使用外部/非python配置文件(例如json、.ini)并设置刷新文件的功能。


所有代码在导入时运行。但是,由于您不太可能在应用程序运行时一次又一次地导入它,因此您可以忽略(最小)开销。


您必须创建一个文件,例如settings.py,将文件所在模块的路径添加到系统中。例子:

1
sys.path.append(os.path.dirname(__file__))

在您可以导入文件并从任何设置获取的任何位置之后:

1
2
3
import settings

env = settings.environment

同样,许多工作框架。