Конфликт имен модулей в Python, как его разрешить?
я наткнулся на файл в нашем проекте, называется-подождите его - celery.py - ... Да, и celery.py импорт из установленного модуля сельдерея (см.http://www.celeryproject.org/) что не является проблемой, потому что проект celery.py использует
from __future__ import absolute_import
перед импортом из установленного модуля сельдерей. Теперь проблема исходит от djcelery (django-celery), который также хотел бы импортировать из сельдерея (установленного, а не проекта celery.py). Это где столкновение происходит потому, что djcelery встречает проект celery.py прежде чем он столкнется с установленным сельдереем. Как я могу это решить?
2 ответов
самый простой и разумный способ сделать это-рефакторинг проекта и изменить имя файла.
вероятно, есть какой-то странный способ обойти это, но я вряд ли считаю, что это стоит того, так как это, скорее всего, усложнит ваш код и сделает его подверженным ошибкам.
As @Chirila Alexandru сказал, просто переименуйте модуль.
вы также можете:
- добавить
from __future__ import absolute_import
в верхней части файла, которая импортируетcelery
(для импортаcelery.py
вместо этого, вы могли бы использоватьfrom project.your_app import celery
) - используйте явный относительный импорт, чтобы импортировать ваш
celery.py
:from . import celery