创建具有第三方依赖关系的可安装Django应用

时间:2019-08-08 12:50:12

标签: django pypi

我正在Django上创建一个可安装的pypi应用程序,该应用程序可以添加到INSTALLED_APPS中。该应用目前可以正常工作。

现在的问题是我希望在我的应用中使用Django Rest Framework。这是否意味着用户在安装我的应用时必须将我的应用以及Django Rest Framework添加到他们的INSTALLED_APPS中?

有没有一种方法可以将我的应用简单地添加到INSTALLED_APPS中,而用户无需意识到或担心其他任何事情。他们不需要知道我在后台使用Django Rest Framework

我已经将djangorestframework添加到我的setup.py中,以便当用户pip installs我的软件包时安装它。因此,问题在于用户是否必须将其明确添加到INSTALLED_APPS

2 个答案:

答案 0 :(得分:1)

您最好/应该做的是将rest框架添加为应用程序中的依赖项,并指示用户在已安装的应用程序中添加rest框架。因为项目设置不应该被实用地修改,所以应该明确地进行硬编码,并在代码库中保持只读状态。

您应指示用户在已安装的应用(如this package does

中添加其他框架)

您可以做的另一件事是像这样检查用户是否在AppConfig类的ready挂钩中安装了“ rest_framework”

class YourAppConfig(AppConfig):
    name = 'yourapp'

    def ready(self):
        from django.conf import settings
        if 'rest_framework' not in settings.INSTALLED_APPS:
            raise ImproperlyConfigured('rest_framework must be in installed apps.')

这至少会迫使他们这样做。

答案 1 :(得分:0)

您可以在setup.py中将djangorestframework添加到install_requires中。

然后,当您的用户运行pip install yourapp时,它也会安装rest框架。

我个人希望在设置说明中将'yourapp''rest_framework'添加到INSTALLED_APPS中。您也许可以找到一种自动添加它的方法,但是这样做可能不值得。例如,Django Debug Toolbar removed its automatic setup code可以降低复杂性。