Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Import Error при запуске celery

#python #celery


У меня есть такая структура папок: 

- src
     -- \frontend
          --- \views
              ---- tasks.py
      -- \generator
          --- tasks.py


Во frontend/views/tasks я делаю: from generator import tasks.
При запуске селери из папки views питон пишет:  


  ImportError: No module named generator


В чем причина такой ошибки?
    


Ответы

Ответ 1



Родительская директория generator обязана быть в sys.path, чтобы from generator import tasks в этом случае работал. Достаточно из src директории запускать, чтобы путь в PYTHONPATH автоматически добавился: src$ python -m frontend.views.tasks Если хочется запускать из других директорий во время разработки, то можно создать setup.py для каждого пакета и установить их: $ pip install -e . Не стоит руками изменять sys.path в своём коде -- это ведёт к сюрпризам с неочевидным происхождением, например, см. Traps for the Unwary. Некоторые пакеты автоматически модифицируют sys.path, например, twisted использует _preamble.py, чтобы скрипты из bin директории могли без установки twisted пакет найти. Но подобная практика не поощряется, например, Pypy имел в прошлом похожий скрипт autopath.py, но сейчас он больше не используется -- он создаёт больше проблем чем решает. Пример проблем с импортом: Why python finds module instead of package if they have the same name?

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

Отправить комментарий