我正在考虑将我的django项目打包成一个可重复使用的软件包。
如何在https://docs.djangoproject.com/en/dev/intro/reusable-apps/,当然还有许多其他网站上很好地提供包装。
所有这些建议是在您的django项目的settings.py中包含可恢复的应用程序的INSTALLED_APPS列表。
很酷,但我对该项目的多重(第三方)依赖项。我是否应该在文档中说明在INSTALLED_APPS列表中包含所有这些包!!
我觉得应该有更好的方法,你只需要包含一个应用程序,并且应用程序会自动将所有依赖项添加到INSTALLED_APPS中。
现在,让我举一个清晰的例子: (您可能需要阅读此处)
现在:
我的问题是: 有没有办法,通过这种方式添加' A'您的项目包括' B'和' C'自动?
话虽如此,我知道如何添加自定义设置并提供合理的默认设置。仅此而已,我无法想到依赖于应用程序的问题(可能是因为它现在将成为第二天)
答案 0 :(得分:1)
我在setup.py
中使用install_requires
选项将其钉住
我们还有tests_require
选项和extras_require
指令,如果您使用的是分发,则所有指令都会转到setuptools.setup()
。
install_requires
和extras_require
都是需求列表(包)。extras_require
是一个包含'testing','doc'等的字典,是键和列表中的需求列表。这些已添加到 0.5a4
相关链接:
答案 1 :(得分:1)
项目A :(内部应用: c 和外部应用: b ):
# Directory Tree:
A
├── setup.py
├── a
│ ├── apps # internal dependencies
│ │ ├── c
│ │ │ ├── models.py
│ │ │ ├── ...
│ │ │ ├── app.py
│ │ │ └── __init__.py
│ │ └── __init__.py
│ ├── core # core library
│ │ ├── __init__.py
│ │ └── whatever.py
│ ├── ...
│ └── __init__.py #
├── ...
└── requirements.pip
# File: A/requirements.pip
# external dependencies: b
b>=0.1,<0.2
# File: A/setup.py
setup(
name="a",
install_requires=["B",], # External Dependency
...
)
# File: A/a/__init__.py
# to be added into INSTALLED_APPS later
CORE_APPS = [
"B", # external apps
"a.apps.C", # internal apps
]
def get_core_apps():
return CORE_APPS
项目A可以设计为没有实现的框架/库。因此它没有
wsgi.py
,manage.py
等......但是项目A可以提供一个示例项目(沙箱或演示项目)。
项目D(Django项目):(使用app: a )
# File: D/requirements.pip
a>=0.1<0.2
# File: D/d/settings.py
import a
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# ...
] + a.get_core_apps()
项目D是项目A的实现。因此它可能包含
settings.py
,wsgi.py
等....