安装app TemplateDoesNotExist错误后

时间:2015-03-04 18:24:40

标签: python django

在virtualenv中默认python3:
首先,我从项目中删除了我的应用 myapp 。我创建了一个名为 django-myapp 的新文件夹,下一个主要的django项目目录。

django-myapp 里面,我将 myapp 复制到此文件夹,并创建了制作python包所需的所有文件。

我跑了python setup.py sdist。到现在为止一切正常。

我的模板和css文件包含在 django-myapp-0.1.tar.gz 文件中。但是当我使用pip install django-myapp/dist/django-myapp-0.1.tar.gz安装此应用程序时,会安装该应用程序。但是当我运行服务器并转到主页 TemplateDoesNotExist 时会发生错误。

我的管理页面有效,然后我检查了 /env/alis5/lib/python3.4/site-packages/myapp / ,其中没有模板目录

问题是什么我按照django教程:https://docs.djangoproject.com/en/1.7/intro/reusable-apps/

这是我的MANIFEST.in:

include LICENSE
include README.rst
recursive-include polls/static *
recursive-include polls/templates *
recursive-include docs *     

这里也是我的setup.py:

setup(
name='django-polls',
version='0.1',
packages=['polls'],
include_package_date=True,
license='BSD License', # example license
description='A simple Django app to conduct Web-based polls.',
long_description=README,
url='http://www.example.com/',
author='Maksat Yalkabov',
author_email='yalkabovmaksat@gmail.com',
classifiers=[
    'Environment :: Web Environment',
    'Framework :: Django',
    'Intended Audience :: Developers',
    'License :: OSI Approved :: BSD License', # example license
    'Operating System :: OS Independent',
    'Programming Language :: Python',
    # Replace these appropriately if you are stuck on Python 2.
    'Programming Language :: Python :: 3',
    'Programming Language :: Python :: 3.2',
    'Programming Language :: Python :: 3.3',
    'Topic :: Internet :: WWW/HTTP',
    'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
)

2 个答案:

答案 0 :(得分:1)

你说你按照教程,但我不得不问,你创建了清单文件吗?你没有提到它,默认情况下只包含Python。

创建myapp/MANIFEST.in并在其中添加recursive-include myapp/templates *

这应该确保python setup.py sdist递归地创建包含模板目录的包。

修改

好的,所以我刚刚在我的一个项目上测试了这个。

- proj
  - setup.py
  - MANIFEST.in
  - injurytracker
    - init.py
    - templates
    - etc

setup.py我已经packages=['injurytracker'],包含了我的包裹,在MANIFEST.in我已经recursive-include injurytracker/templates *当我检查dist.gz时我已经得到了我的模板。

正如您所提到的include_package_data,无论采用哪种方式设置,都不会影响模板目录的包含。

在您的setup.py中也从setuptools导入find_packages,并在您的设置方法中添加这样的内容;

packages=find_packages(exclude=["project", "project.*"]),

对我来说,挑选出我所有的python模块&我期望的文件,包括迁移。

答案 1 :(得分:0)

您的settings.py

中是否有这个?
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader', # <--
)