Конфликт имен модулей в 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