11/29: virtualenv with manage.py
My app wasn’t running in the virtualenv I had prepared for it … I activated a virtualenv by sourcing /usr/local/pythonenv/DJANGO-1-1/bin/activate, and then ran ./manage.py runserver
. However, according to the debug stuff I put in the template (django.get_version() and python.VERSION), the app wasn’t using the right django.
It turns out that manage.py has #!/usr/bin/python
at the top — it wasn’t running the python in the path but a hardcoded path to the system python. To use the virtualenv’s python, change that top line to:
#!/usr/bin/env python
This will use the python that can be found in the path of the calling process — which is what you want when using virtualenv.
It may be that newer django’s will generate the /usr/bin/env line, but if you created your project with an older django, you might need this step.