Ошибка при импорте модуля Python в Django

В моем проекте Django следующая строка выдает ошибку ImportError: «Нет модуля с именем elementtree».

  from elementtree import ElementTree 

Однако модуль установлен (т. Е. Я могу запустить интерактивную оболочку python и ввести именно эту строку без ImportError), а каталог, содержащий модуль, находится в PYTHONPATH. Но когда я открываю любую страницу в браузере, он почему-то не может найти модуль и выдает ошибку ImportError. Что может быть причиной этого?


person raviv    schedule 03.09.2009    source источник
comment
Использует ли Django ту же версию Python, что и в оболочке?   -  person Andrew Hare    schedule 03.09.2009
comment
Хороший вопрос. Как узнать, какой Python использует django?   -  person raviv    schedule 03.09.2009


Ответы (3)


Можете ли вы импортировать elementtree в оболочку django:

python manage.py shell

Предполагая, что у вас есть несколько версий Python и вы не знаете, какая из них используется для запуска вашего сайта, добавьте следующее в свое представление и нажмите python_ver в свой шаблон, он покажет вам версию Python, которую вы используете:

import sys
python_ver = sys.version

Вы также можете явно добавить путь к дереву элементов программно в вашем settings.py:

import sys
sys.path.append('path to where elementtree resides')
person Thierry Lam    schedule 03.09.2009
comment
Спасибо! Добавление дерева элементов к пути Python вручную с помощью sys.path.append() помогло. - person raviv; 04.09.2009
comment
Если вы просто взламываете, это, вероятно, сработает. Если это будет производственный код, вы не понравитесь вашим QA, если вы взломаете sys.path таким образом. Вместо этого вы, вероятно, захотите взглянуть на virtualenvs, который позволит вам установить определенную версию django, elementtree и других модулей Python без большой возможности для путаницы. - person Andrew; 07.03.2012

Я также столкнулся с кроссплатформенными проблемами, когда ElementTree был доступен из разных модулей в разных системах ... это сработало для меня:

try:
    import elementtree.ElementTree as ET
except:
    import xml.etree.ElementTree as ET

Может помочь, а может и не помочь ...

person Gabriel Hurley    schedule 03.09.2009

Зайдите в вашу установочную директорию

Пример:

C: \ Python26 \ Lib \ сайты-пакеты

И проверьте, есть ли там и elementtree, и django.

Если их там нет, то у вас, вероятно, есть несколько каталогов установки для разных версий Python.


В любом случае вы можете решить свою проблему, выполнив эту команду:

установка python setup.py

Запустите его дважды, один раз внутри загрузки для django и один раз внутри загрузки для elementtree. Он установит обе загрузки в любой ваш текущий питон по умолчанию.

Использованная литература:

person Brian R. Bondy    schedule 03.09.2009
comment
elementtree находится в моем установочном каталоге ($ HOME / lib / python /), но я думаю, что у меня есть несколько установочных каталогов (все они находятся на PYTHONPATH, но я не знаю, нужно ли мне делать что-либо помимо этого). Я также использую локальный питон (which python дает мне $ HOME / local / bin / python, а не обычный / usr / bin / python). - person raviv; 03.09.2009
comment
добавлены некоторые дополнительные сведения о том, как, возможно, исправить. - person Brian R. Bondy; 03.09.2009