Relative imports require the 'package' argument

DJANGO_SETTINGS_MODULE is expected to be a Python module identifier, not a filesystem path. Looking at the django/conf/__init__py file, it seems that a relative path to your settings module won't work there. You will need to move it below a directory listed in your sys.path, or you should add a parent directory to your sys.path and reference your settings module from there.


You can also get this error simply if you have a typo in where you're specifying your settings file name.


I came to this question via Google, so I'll answer what helped me (not directly related to the question).

I use importlib to dynamically import sub-packages given by a string.

import importlib
module_name = 'subpackage.i.import'
special_module = importlib.import_module(module_name, package=None)

This simply has to be adjusted to

import importlib
module_name = 'subpackage.i.import'
special_module = importlib.import_module(module_name, package='my_current_pkg')