Подтвердить что ты не робот

ImportError: не удалось импортировать настройки

Я пытаюсь разработать образец проекта в Django и получать ошибки при запуске команды syncdb.

Вот как выглядит моя структура проекта:

/Users/django_demo/godjango/заказы:

manage.py
    registration/
        forms.py
        views.py
        models.py
        urls.py
    bookings/
        settings.py
        urls.py

И мой файл manage.py выглядит следующим образом:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

И мои настройки PYTHONPATH и DJANGO_SETTINGS_MODULE установлены ниже

$echo $DJANGO_SETTINGS_MODULE
bookings.settings

$ echo $PYTHONPATH
/Users/django_demo/godjango/bookings

И мой файл WSGI.py выглядит следующим образом:

 import os
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings")
 from django.core.wsgi import get_wsgi_application
 application = get_wsgi_application()

Когда я запускаю команду python manage.py syncdb, я получаю следующую ошибку.

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
    from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/sql.py", line 6, in <module>
    from django.db import models
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/db/__init__.py", line 11, in <module>
    if DEFAULT_DB_ALIAS not in settings.DATABASES:
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner
    self._setup()
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
    self._wrapped = Settings(settings_module)
  File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'bookings.settings' (Is it on sys.path?): No module named unipath

Может кто-нибудь предположить, чего я не хватает?

4b9b3361

Ответ 1

Ошибка говорит ImportError: Could not import settings 'bookings.settings' (Is it on sys.path?): No module named unipath

Итак, ваш путь /Users/django_demo/godjango/bookings в python-sys.path?

Проверьте его в своей оболочке:

$ python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for path in sys.path: print path
... 

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL-1.1.7-py2.7-macosx-10.6-intel.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/spyne-2.8.2_rc-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0alpha2-py2.7-macosx-10.6-intel.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pytz-2012d-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_debug_toolbar-0.9.4-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_social_auth-0.7.7-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/python_openid-2.2.5-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/oauth2-1.5.211-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django-1.4.1-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/httplib2-0.7.6-py2.7.egg
/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
/Library/Python/2.7/site-packages
>>> 

Если нет - вам нужно добавить его или просто переместить приложение bookings в один из путей, представленных в sys.path

Ответ 2

Измените файл wsgi.py с

 import os
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings")
 from django.core.wsgi import get_wsgi_application
 application = get_wsgi_application()

to

import os, sys    
sys.path.append(' /Users/Sreek/django_demo/godjango/bookings')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Ответ 3

Значительная часть трассировки здесь находится в самом конце. В нем говорится: "Нет модуля с именем unipath". Вы упомянули об этом где-то в своем коде, но вы, похоже, не имеете его в своем проекте - он не является частью стандартной библиотеки, поэтому вам нужно будет установить его где-нибудь, что Python может его увидеть.

Ответ 4

В качестве альтернативы вы даже можете пройти путь настроек во время выполнения следующим образом:

python manage.py syncdb --settings=bookings.settings --pythonpath=/Users/django_demo/godjango/bookings

Это должно переопределить переменную окружения (DJANGO_SETTINGS_MODULE)

Ответ 5

Просмотрите час /etc/apache 2/httpd.conf файл; вы должны включить директиву WSGIPythonPath, чтобы указать папку, содержащую ваш проект Django (файл manage.py), например:

WSGIPythonPath/home/user/Projects/Django/MyProject

также, если вы использовали какой-то странный порт в вашем VirtualHost, укажите, что для прослушивания:

Слушайте 90

Надеюсь, что это поможет кому-то.

Ответ 6

ImportError: Could not import settings 'settings' (Is it on sys.path? Is there an import error in the settings file?): No module named setting

В моем случае я использовал __init__.py для импорта других файлов, и в нем была ошибка, поэтому настройки могут существовать, но быть испорченными.