Part 3 - Modifying manage.py

By manually appending mysite_dir to sys.path, you ensure that Django can correctly import the project modules (like mysite.settings) even when the process is started from outside the project directory or with an embedded Python.
 

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys

mysite_dir = os.path.join(os.path.dirname(__file__))
sys.path.append(mysite_dir)

def main():
    """Run administrative tasks."""
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

 


Windows
Django



26 March 2025 | Last Updated: 13 Feb. 2026 | jaimedcsilva

Related
  • Part 1 - Example of a Django project
  • Part 2 - Embedded Python + pip
  • Part 3 - Modifying manage.py
  • Part 4 - Creating a launcher
  • Part 5 - Windows Installer with Inno Setup

  • Buy Me a Coffee