我写了一个简单的模块,我需要将其导入到我的Django设置文件中。
导入发生在libraries
字典的以下部分:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
#re-route the search for templates into this custom template directory
os.path.join(os.path.join(BASE_DIR, 'templates'), 'tshirt-theme'),
#Uncomment the line below to restore the original Oscar template
#OSCAR_MAIN_TEMPLATE_DIR,
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.i18n',
'django.contrib.messages.context_processors.messages',
'oscar.apps.search.context_processors.search_form',
'oscar.apps.promotions.context_processors.promotions',
'oscar.apps.checkout.context_processors.checkout',
'oscar.apps.customer.notifications.context_processors.notifications',
'oscar.core.context_processors.metadata',
],
'libraries': {
'promotion_tags': 'custom_oscar.templatetags.promotion_tags'
}
},
},
]
麻烦的是我收到了错误。这是:
位于/
的InvalidTemplateLibrary指定的模板库无效。尝试时引发了ImportError load'custom_oscar.templatetags.promotion_tags':没有命名的模块 custom_oscar.templatetags.promotion_tags
代码在我的本地计算机上运行,但在将其迁移到生产环境时失败(Ubuntu 16.01)。
我的项目结构如下:
/var/www/vhosts/book/
...book-site
custom_oscar
templatetags
promotion_tags.py
manage.py
book
settings.py
wsgi.py
..
...book-env
bin
最初我怀疑问题可能与路径有关,所以我检查了跟踪,似乎包含了正确的路径:
Python路径:
['/var/www/vhosts/book/book-site',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/var/www/vhosts/book/book-env/lib/python3.5/site-packages']
有谁能告诉我为什么会出现这个错误?我该如何解决?
P.S。如果有帮助,我可以在手动激活virtualenv时从命令行成功导入该模块。