Итак, я пытаюсь написать приложение для повторного использования Django, которое предоставляет способ отображения вашего канала Twitter на вашей странице. Я хорошо знаю, что он уже существует 20 раз. Это академическое упражнение. :)Ошибка импорта внешней библиотеки в библиотеку тегов шаблонов Django
Структура каталогов довольно проста:
myproject
|__ __init__.py
|__ manage.py
|__ settings.py
|__ myapp
|__ __init__.py
|__ admin.py
|__ conf
|__ __init__.py
|__ appsettings.py
|__ feedparser.py
|__ models.py
|__ templates
|__ __init__.py
|__ templatetags
|__ __init__.py
|__ twitterfeed.py
|__ views.py
|__ templates
|__ base.html
|__ urls.py
При запуске Django оболочки, функции определены в twitterfeed.py работе отлично. Я также считаю, что у меня есть теги шаблонов, правильно названные и зарегистрированные.
Как вы можете видеть, я использую отличный Universal Feed Parser. Моя проблема заключается не в самом UFP, а в невозможности вызывать UFP при импорте библиотеки тегов шаблонов. Когда я {% load twitterfeed %}
в base.py, я получаю следующее сообщение об ошибке:
'twitterfeed' is not a valid tag library: Could not load template library from django.templatetags.twitterfeed, No module named feedparser
импортировать feedparser с помощью следующего оператора:
import re, datetime, time, myapp.feedparser
Лучшее, что я могу сказать, это сообщение об ошибке немного обманчива. Я думаю, что при загрузке библиотеки шаблонов происходит импорт ImportError, и это интерпретация Django.
Можно ли каким-либо образом импортировать файл feedparser.py в свое многоразовое приложение, не требуя от пользователей приложения размещать feedparser где-нибудь в PythonPath?
Спасибо!
Спасибо Simon! Итак ... можно с уверенностью сказать, что это невозможно сделать таким образом, чтобы поддерживать мобильность приложений? – 2009-07-26 17:55:03
Я бы не сказал, что ... вы можете определенно включать зависимости в приложении (а не в каталог ext /), но это может быть немного более странно, как вы обнаружили из своего вопроса. Я ленив, поэтому я обычно использую метод ext /, потому что знаю, что он работает. –
Включение приложений прямо в приложение вызывает тонкие ошибки: как каталог приложения, так и его родительский элемент находятся в пути, поэтому его можно импортировать дважды, как «mypackage.app», так и «app». Безопаснее вставлять его в подкаталог на пути, поэтому для него есть только одно возможное имя («приложение»). –