Я использую virtualenv
с моей установкой Python Django.
Вот моя структура каталогов :
project/
dev_environ/
lib/
python2.6/
site-packages/
...
django/
titlecase/ # <-- The titlecase module
PIL/
...
bin/
...
python # <-- Python
...
include/
django_project/
localsite/
templatetags/
__init__.py
smarttitle.py # <-- My templatetag module
foo_app/
bar_app/
settings.py
manage.py
Если я запускаю свою оболочку Django ипопытка импортировать titlecase
все в порядке, потому что titlecase
находится в sys.path
в dev_environ/lib/python2.6/site-packages/titlecase
.
$:django_project cwilcox$ ../dev_environ/bin/python manage.py shell
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import titlecase # <-- No Import Error!
>>>
Я даже могу сделать import titlecase
внутри моего settings.py
файла без ошибок.
Однако, когда я пытаюсь import titlecase
в моей библиотеке тегов smarttitle.py
, я получаю ImportError
.
smarttitle.py выглядит следующим образом.
from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
from titlecase import titlecase as _to_titlecase
@register.filter
@stringfilter
def smarttitle(value):
return _to_titlecase(value)
smarttitle.is_safe = True
Не только это, но я могу даже import titlecase
внутри представления, которое отображает шаблон, который пытается {% load smarttitle %}
и ошибки нет.
Мой сервер разработки Django запущен с ...
../dev_environ/bin/python manage.py runserver
В заключение:
Я могу импортироватьtitlecase
модуль везде кроме как внутри этой библиотеки тегов-шаблонов, где он выдает ImportError
!Что дает?!Есть идеи?
РЕДАКТИРОВАТЬ : Сначала я попытался запустить source dev_environ/bin/activate
, чтобы переключить мою оболочку env на virtualenv, но это не помогло - я все еще получаюImportError внутри моего модуля tagtag.Я уже вызывал правильный двоичный файл Python вручную.