I'd prefer the pypi_cache_url to be an optional thing in project settings rather than it's absence causing bootstrap to fail.  So we'd use:

    getattr(project_settings, 'pypi_cache_url', None)

instead.  This would also remove the need for the else clause in project_settings.py

Does that sound fair to you?