我们将Django用于项目。在1.7+之前,我们能够在执行setup.py时动态地将文件拉入我们的python环境。例如,我们有这个目录结构:
/foo/bar
/foo/bar/__init__.py
/foo/bar/my_functions.py
我们的Django项目对这些文件一无所知。当Web服务器启动并且读取了setup.py时,我们会查看一个配置,告诉我们在哪里可以找到要添加到我们环境中的文件。再次,让我们假设/foo/bar
在我们的配置中是动态加载的。然后我们将使用import_module()
导入它,以便/foo/bar
下的任何内容基本上成为项目的一部分并可以使用。它基本上是一个"插件"特征
在Django> = 1.7之后,这会导致很大的问题,主要是:
django.core.exceptions.AppRegistryNotReady: The translation infrastructure
cannot be initialized before the apps registry is ready. Check that you
don't make non-lazy gettext calls at import time.
它还限制了我们动态添加新文件的能力,因为您始终必须将它们放置到位并重新启动Web服务器。你不可能有一个"上传插件"例如,将新文件添加到服务器的页面。
有没有办法在Web服务器启动期间以及启动后添加这样的文件而不重新启动它?