在Django中导入自定义模块“没有模块命名为custom_module”错误

时间:2017-08-13 15:07:16

标签: python django path virtualenv wsgi

我写了一个简单的模块,我需要将其导入到我的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时从命令行成功导入该模块。

0 个答案:

没有答案