Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python import similar to Django settings file

Tags:

python

django

I am trying to use a *.py file to take variables from and use them across multiple imports in my python application, similar to how a Django settings file works.

An example settings file:

DB_NAME = 'foo'
DB_TABLE = 'bar'
#Lots of other variable names and values here

The benefit is that I can load different settings very quickly this way. I can reference a sort of global "DB_NAME" wherever I want without having specific objects to deal with.

The drawback is that I have to change the import statement in every file that has to import them.

Can I set it up so that I import the file once and then reference a generic import to get all of these values?

Or is there a much better way to do this?

Any help is appreciated.

EDIT: The problem stems from having multiple settings files. I would have to import settings.py for one file, or if I want a different settings file, I would need to change all the import statements to reference test_settings.py, etc..

I don't want to manually change the import locations in order to change what is imported across the entire application.

like image 306
metalcharms Avatar asked Nov 08 '25 19:11

metalcharms


2 Answers

create our own config.py file in a folder

settings = {}
settings['server'] = '172.16.150.106:1433'
settings['user'] = 'pyadmin'
settings['password'] = 'admin'
settings['db'] = 'SQLSERV_2005' 

open shell (ipython)

In [1]: from config import settings

In [2]: print settings
{'password': 'admin', 'db': 'SQLSERV_2005', 'user': 'pyadmin', 'server': '172.16.150.106:1433'}

don't forget your __init__.py file !

like image 110
mtt2p Avatar answered Nov 10 '25 11:11

mtt2p


You can use module __builtin__:

File a.py:

#!/usr/bin/env python
import __builtin__
import b

if __name__ == "__main__":
    import conf
    __builtin__.__dict__["CONF"] = conf

    print "IN A: %s" % CONF.VAR

    b.test_conf()

File b.py:

def test_conf():
   print "IN B: %s" % CONF.VAR

File conf.py:

VAR = "VAL"

So basically you need to setup an element in builtin dict once and then access it in any other loaded modules by name.