Easily Add Directory Path for Django Apps
Posted On: October 7, 2010 at 11:28 a.m.
A simple way to do this is to add a couple of lines to manage.py appending our new directory to the python path. Your manage.py file should look something like this:
#!/usr/bin/env python
from django.core.management import execute_manager
try:
import settings # Assumed to be in the same directory.
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)
if __name__ == "__main__":
execute_manager(settings)
To add our directory we’ll change it to the following:
#!/usr/bin/env python
import sys
from os.path import abspath, dirname, join
from django.conf import settings
from django.core.management import setup_environ, execute_from_command_line
try:
import settings as settings_mod # Assumed to be in the same directory.
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)
# setup the environment before we start accessing things in the settings.
setup_environ(settings_mod)
sys.path.insert(0, join(settings.PROJECT_ROOT, "apps"))
if __name__ == "__main__":
execute_from_command_line()
This of course assumes that you have a “PROJECT_ROOT” declaration in your settings.py file. Its pretty simple but it gets the job done. Now you don’t have to append apps.whateverapp to every import.


Comments