Ошибка типа: для относительного импорта требуется аргумент пакета в python

#python #django #python-2.7

#python #django #python-2.7

Вопрос:

Я только начал изучать Python (2.7) и столкнулся с проблемой. Я использую Windows 10.

Я создал виртуальную среду (c:virtualenvstestenv ) и активировал его. Мой путь к папке приложения c:pyprojectspytest . В этой папке есть requirements.txt со всеми перечисленными пакетами.

Приглашение выглядит следующим образом

 (testenv) c:pyprojectspytestpip install -r requirements.txt
  

Он успешно устанавливает все необходимые пакеты в testenv. Затем я выполнил следующую команду

 (testenv) c:pyprojectspytestpython manage.py runserver
  

и получил следующую ошибку—

 Unhandled exception in thread started by <function wrapper at 0x03ABF8F0>
Traceback (most recent call last):

  File "C:virtualenvstestenvlibsite-packagesdjangoutilsautoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "C:virtualenvstestenvlibsite-packagesdjangocoremanagementcommandsrunserver.py", line 113, in inner_run
    autoreload.raise_last_exception()
  File "C:virtualenvstestenvlibsite-packagesdjangoutilsautoreload.py", line 249, in raise_last_exception
    six.reraise(*_exception)
  File "C:virtualenvstestenvlibsite-packagesdjangoutilsautoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "C:virtualenvstestenvlibsite-packagesdjango__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:virtualenvstestenvlibsite-packagesdjangoappsregistry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "C:virtualenvstestenvlibsite-packagesdjangoappsconfig.py", line 90, in create
    module = import_module(entry)
  File "c:python27Libimportlib__init__.py", line 30, in import_module
    raise TypeError("relative imports require the 'package' argument")
TypeError: relative imports require the 'package' argument
  

Теперь я проверил файл — C:Python27Libimportlib__init__.py и в нем говорится

  if name.startswith('.'):
        if not package:
            raise TypeError("relative imports require the 'package' argument")
        level = 0
        for character in name:
            if character != '.':
                break
            level  = 1
        name = _resolve_name(name[level:], package, level)
    __import__(name)
    return sys.modules[name]
  

В папке моего приложения нет файла, специально настроенного.py, который начинается с точки. Это то, что моя папка приложения не включена в основной путь python? или я что-то упускаю.

Любая помощь приветствуется.

Комментарии:

1. Пожалуйста, покажите свои INSTALLED_APPS настройки.

Ответ №1:

Ожидается, что DJANGO_SETTINGS_MODULE будет идентификатором модуля Python, а не путем к файловой системе. Глядя на файл django/conf/__init__py, кажется, что относительный путь к вашему модулю настроек там не будет работать. Вам нужно будет переместить его ниже каталога, указанного в вашем sys.path, или вы должны добавить родительский каталог в свой sys.path и ссылаться на свой модуль настроек оттуда.