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

创建具有第三方依赖关系的可安装Django应用程序,django,pypi,Django,Pypi,我正在pypi上创建一个可安装的Django应用程序,可以将其添加到INSTALLED_APPS。到目前为止,应用程序工作正常 现在的问题是,我希望在我的应用程序中使用Django Rest框架。这是否意味着用户在安装我的应用程序时,必须将我的应用程序以及Django Rest Framework添加到其已安装的应用程序中 有没有一种方法可以简单地将我的应用程序添加到已安装的应用程序中,而无需用户知道或担心其他任何事情。他们不需要知道我在幕后使用了Django Rest框架 我已经将django

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

现在的问题是,我希望在我的应用程序中使用
Django Rest框架
。这是否意味着用户在安装我的应用程序时,必须将我的应用程序以及
Django Rest Framework
添加到其
已安装的应用程序中

有没有一种方法可以简单地将我的应用程序添加到
已安装的应用程序中
,而无需用户知道或担心其他任何事情。他们不需要知道我在幕后使用了
Django Rest框架


我已经将
djangorestframework
添加到我的
setup.py
中,以便在用户
pip安装我的软件包时安装它。因此,问题在于用户是否必须将其显式添加到安装的应用程序中。您可以在setup.py中将
djangorestframework
添加到您的应用程序中

然后,当用户运行
pip install yourapp
时,它也将安装rest框架

就我个人而言,我建议在安装说明中将
'yourapp'
'rest\u framework'
添加到
已安装的应用程序中。您可能能够找到一种自动添加它的方法,但这可能不值得付出努力。例如,Django调试工具栏可以降低复杂性。

您可以/应该做的最好的事情是在应用程序中添加rest框架作为依赖项,并指示用户在已安装的应用程序中添加rest框架。因为项目设置不应该实际修改,所以应该显式地硬编码,并且在代码库中保持只读

您应该指示用户在已安装的应用程序中添加rest框架,如

您可以做的另一件事是检查用户是否在AppConfig类的
ready
hook中安装了“rest\u 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.')

这至少会迫使他们这样做

Django的
INSTALLED_APPS
列表仅为方便起见,因为Django会自动在列出的应用程序中搜索模板、静态文件、URL、模型等。如果您只是出于内部目的使用DRF,那么它不需要出现在
INSTALLED_APPS
列表中。将DRF看作一个常规的Python库,您可以导入并使用它。