Search code examples
pythondjangomongodbdjango-nonreldjango-mongodb-engine

Error was: No module named django_mongodb_engine.base


I installed and configured a Django/MongoDB like this way !

pip install virtualenv

source myproject/bin/activate

pip install hg+https://bitbucket.org/wkornewald/django-nonrel

pip install hg+https://bitbucket.org/wkornewald/djangotoolbox

pip install git+https://github.com/django-nonrel/mongodb-engine

All these operations are successful !

now , when I changed the settings.py file like this way :

DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'mong_db',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }

The mind-bending error occurs:

Error was: No module named django_mongodb_engine.base

Obviously the django_mongodb_engine successful installed. but why this error will appear?

btw,Forgive my poor English !


Solution

  • I went through the same steps you did, then opened a Python shell:

    $ python
    >>> import django_mongodb_engine.base
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/emptysquare/.virtualenvs/foo/lib/python2.7/site-packages/django_mongodb_engine/base.py", line 4, in <module>
        from django.db.backends.signals import connection_created
      File "/Users/emptysquare/.virtualenvs/foo/lib/python2.7/site-packages/django/db/__init__.py", line 14, in <module>
        if not settings.DATABASES:
      File "/Users/emptysquare/.virtualenvs/foo/lib/python2.7/site-packages/django/utils/functional.py", line 276, in __getattr__
        self._setup()
      File "/Users/emptysquare/.virtualenvs/foo/lib/python2.7/site-packages/django/conf/__init__.py", line 40, in _setup
        raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
    ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
    

    But if I do:

    $ DJANGO_SETTINGS_MODULE=settings python
    >>> import django_mongodb_engine.base
    

    ... it works.

    Can you set DJANGO_SETTINGS_MODULE and try importing django_mongodb_engine.base in the Python shell?