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