#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?
Комментариев нет:
Отправить комментарий