Ошибка циклического импорта в Django возникает только при импорте пакета geemap
Я пытаюсь использовать geemap в сочетании с django для создания веб-приложения для построения спутниковых данных. Я установил пакет geemap в свой проект django. Мой проект называется CustomMaps, а структура каталогов выглядит следующим образом. введите здесь описание изображения
Код для моего CustomMaps.urls.py выглядит следующим образом
from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url
urlpatterns = [
path('admin/', admin.site.urls),
path('plotmap/', include('PlotMap.urls')),
]
Код моего PlotMap.urls.py следующий
from django.urls import path
from django.conf.urls import include, url
from .views import hello
urlpatterns = [
path('hello/', hello, name = 'hello'),
]
А мой PlotMap.views.py выглядит следующим образом
from django.http import HttpResponse
from django.shortcuts import render
import geemap as gm
#import pandas as pd
def hello(request):
map = gm.Map()
return render(request, "PlotMap/hello.html", { "m" : map})
Но я получаю следующую ошибку при запуске проекта
Exception in thread django-main-thread:
Traceback (most recent call last):
File "D:\Internship\Django App\MyProject\lib\site-packages\django\urls\resolvers.py",
line 604, in url_patterns
iter(patterns)
TypeError: 'module' object is not iterable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\HP\AppData\Local\Programs\Python\Python36-32\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\Users\HP\AppData\Local\Programs\Python\Python36-32\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "D:\Internship\Django App\MyProject\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "D:\Internship\Django App\MyProject\lib\site-packages\django\core\management\commands\runserver.py", line 118, in inner_run
self.check(display_num_errors=True)
File "D:\Internship\Django App\MyProject\lib\site-packages\django\core\management\base.py", line 423, in check
databases=databases,
File "D:\Internship\Django App\MyProject\lib\site-packages\django\core\checks\registry.py", line 76, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "D:\Internship\Django App\MyProject\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config
return check_resolver(resolver)
File "D:\Internship\Django App\MyProject\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver
return check_method()
File "D:\Internship\Django App\MyProject\lib\site-packages\django\urls\resolvers.py",
line 416, in check
for pattern in self.url_patterns:
File "D:\Internship\Django App\MyProject\lib\site-packages\django\utils\functional.py", line 48, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "D:\Internship\Django App\MyProject\lib\site-packages\django\urls\resolvers.py",
line 611, in url_patterns
raise ImproperlyConfigured(msg.format(name=self.urlconf_name)) from e
django.core.exceptions.ImproperlyConfigured: The included URLconf 'CustomMaps.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.
Но если я запускаю тот же код после изменения файла views.py, как показано ниже, он работает совершенно нормально.
from django.http import HttpResponse
from django.shortcuts import render
#import geemap as gm
#import pandas as pd
def hello(request):
#map = gm.Map()
return render(request, "PlotMap/hello.html", { })
Я не могу понять, почему мой 'import geemap' приводит к ошибке циклического импорта в CustomMaps.urls.py. Я пытался искать то же самое, но до сих пор не смог ничего найти. Если кто-нибудь сможет мне помочь, я смогу продолжить работу в ближайшее время, спасибо.
На самом деле, я попробовал установить новую версию python (3.8), а также загрузил новую версию geemap (0.11.4), что решило проблему.
Но я все еще пытаюсь понять, как отобразить экземпляр geemap.Map() в моем шаблоне django, любые предложения будут очень полезны.
Я опубликую новый вопрос о том же самом.