也许这是我正在做的蠢事,或者我可能需要在setup.py
做一些事情,或者这可能是一个错误。
Python 2.6 Django 1.6
这是一款带有多个子应用的可重复使用的django应用。与django相关的是错误。当我尝试启用子应用程序时,django无法找到它们。它无法找到它们的原因是因为setup.py在安装期间删除了__init__.py
。当我在安装位置手动添加它时,没关系。
app文件夹和相关文件排列如下。
someapp
django
apps
subapp1
subapp2
subapp3
__init__.py
setup.py
在python setup.py install
之后,安装位置缺少上面显示的__init__.py
,如果缺少该文件,当我尝试将它们添加到INSTALLED_APPS
时,django找不到subapp1,subapp2,subapp3。
当我尝试添加someapp.django.apps.subapp1
django说
没有名为apps.subapp1的模块
当我在安装位置添加__init__.py in
apps`文件夹时,错误就会消失。
运行setup.py后,所有其他文件夹都有__init__.py
,apps
除外。
我尝试更改apps
目录名称,认为这可能是一个保留字,但它没有改变任何内容。我也尝试在__init__.py
文件中添加一些内容,以为它可能不是空的但没有帮助。还尝试添加一个空的models.py
文件,认为需要更多,但仍然没有骰子。
我的setup.py文件只是标准的样板文件。也许我需要添加一些东西。我尝试使用distutils而不是setuptools,但这并没有什么区别。
#setup.py
import os
from setuptools import setup
def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()
setup(
name = "appname",
version = "0.0.1",
author = "blah inc",
author_email = "blah@blah.com",
description = ("some description"),
license = "MPL",
keywords = "some keywords",
url = "http://someurl.org",
packages=[
'someapp',
'someapp.api',
'someapp.django',
'someapp.django.apps.subapp1',
'someapp.django.apps.subapp2',
'someapp.django.apps.subapp3',
'someapp.eventsocket',
'someapp.interface',
],
etc.
etc.
.
.
)
答案 0 :(得分:5)
你错过了someapp.django.apps
套餐;您必须在该列表中列出所有包。
您可以使用setuptools.find_packages()
setup(
# ...
packages=find_packages(),
# ...
)