пятница, 5 февраля 2010 г.

Зависимости, зависимости...

У товарища тут вышла проблема с разворачиванием приложеньица на джанге. Вроде всё сделано нормально, но выдаёт, хоть ты тресни, ошибку импорта, аля "не могу импортировать 'test.settings'", но файл-то лежит рядом и из питона нормально импортируется. Битый час придумывал, откуда могут ноги у этой проблемы расти. Оказалось всё тривиально - в поставке питона идёт модуль test, поэтому возник конфликт пакетов.
Так что называйте папки (и пакеты) внятно!

6 комментариев:

  1. Можно добавить в sys.path (ближе к началу) путь к к месту, где лежат внешние зависимости (если они не в project).

    ОтветитьУдалить
  2. Вопрос не во внешних зависимостях (скорей наоборот), да и манипуляции с sys.path тоже, на мой взгляд, вещь близкая к "шаманству".

    ОтветитьУдалить
  3. it's well known problem, try:
    from __future__ import absolute_import

    ОтветитьУдалить
  4. Абсолютный импорт тут ни каким боком, совет из разряда "слышал звон, да не знаю где он"?

    ОтветитьУдалить
  5. Когда я начинаю ходить по таким граблям, то сразу же делаю

    >>> import modname
    >>> modname.__file___

    ОтветитьУдалить
  6. ну это-то понятно, но
    фокус в том, что обращение к settings.py по имени папки идёт внутри джанги, т.е. по идее есть строчки import settings, и там-то всё нормально.

    ОтветитьУдалить