Django Installed Apps Location


Question

I am an experienced PHP programmer using Django for the first time, and I think it is incredible!

I have a project that has a lot of apps, so I wanted to group them in an apps folder.

So the structure of the project is:

/project/
/project/apps/
/project/apps/app1/
/project/apps/app2

Then in Django settings I have put this:

INSTALLED_APPS = (
    'project.apps.app1',
    'project.apps.app2',
)

This does not seem to work?

Any ideas on how you can put all your apps into a seprate folder and not in the project root?

Many thanks.

1
15
4/8/2009 1:20:31 PM

Accepted Answer

Make sure that the '__init__.py' file is in your apps directory, if it's not there it won't be recognized as part of the package.

So each of the folders here should have '__init__.py' file in it. (empty is fine).

/project/
/project/apps/
/project/apps/app1/
/project/apps/app2

Then as long as your root 'module' folder is in your PYTHONPATH you'll be able to import from your apps.

Here's the documentation regarding the python search path for your reading pleasure:

http://docs.python.org/install/index.html#modifying-python-s-search-path

And a nice simple explanation of what __init__.py file is for:

http://effbot.org/pyfaq/what-is-init-py-used-for.htm

39
2/4/2009 1:54:27 PM

As long as your apps are in your PYTHONPATH, everything should work. Try setting that environment variable to the folder containing your apps.

PYTHONPATH="/path/to/your/apps/dir/:$PYTHONPATH"

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon