GeoDjango - FileNotFoundError: Не удалось найти модуль 'C:\OSGeo4W\bin\gdal304.dll' (или одну из его зависимостей)
Я пытаюсь установить GeoDjango, что оказалось намного сложнее, чем я думал. После установки OSGeo4W на мою 64-битную систему Windows 10 я все настроил в файле settings.py, но теперь я получаю эту ошибку:
FileNotFoundError: Could not find module 'C:\OSGeo4W\bin\gdal304.dll' (or one of its dependencies). Try using the full path with constructor syntax.
Я также установил GDAL_LIBRARY_PATH
, но он просто не работает.
GDAL_LIBRARY_PATH = "C:\\OSGeo4W\\bin\\gdal304.dll"
Вот мой путь C:\OSGeo4W\bin
и, как вы можете видеть, файл gdal304.dll
находится там
Мой Python имеет версию 3.10.6. Django - версия 4.1
Я уже неделю пытаюсь решить эту проблему самостоятельно, но постепенно у меня не осталось ни одной идеи, что делать
Я тоже столкнулся с этой проблемой, поскольку сегодня я обновил свою старую установку GEO Django Setup.
Вы можете использовать образ Docker, как предлагают другие, но я предпочитаю нативное решение, поскольку не хочу запускать Docker каждый раз, когда начинаю кодировать.
Ваше решение находится в скобках: (или одна из его зависимостей)
Вы можете посмотреть переходные зависимости из gdal304.dll
. Для этого существует несколько инструментов (см. здесь). Сейчас я использую интегрированный в Git MinGW - Shell, в котором установлено ldd
. Это должно быть так для любой (более новой) установки Git на Windows.
Как вы можете видеть, некоторые зависимости уже выполнены из вашей операционной системы. Другие, которые отсутствуют, должны быть заполнены из OSGeo4W. Если вы сравните это с вашим каталогом bin
из OSGeo4W, вы увидите проблему:
К сожалению, простое "переименование" не помогло. Мне повезло, и я еще не удалил свою старую версию OSGeo4W. В старых файлах я нашел необходимую DLL.
Короче говоря, вам нужен файл jpeg.dll
.
Существуют сайты типа "windll.com" или "dll-files.com", но я бы не рекомендовал их использовать. Я не доверяю этим сайтам. Вы можете установить что-то вроде "MSYS2", "Cygwin" или даже "MVSC", установить библиотеку "libjpeg-turbo" и затем, наконец, скопировать & вставить необходимый DLL файл.
Это также предлагается на официальном сайте для libjpeg-turbo: https://libjpeg-turbo.org/Documentation/OfficialBinaries
Но это кажется большой работой для того, кто просто хочет иметь DLL-файл, но опять же: Никогда не загружайте библиотеку вслепую из Интернета и не загружайте ее в свое приложение. Эти библиотеки могут сделать что угодно!
Вот мой хакерский обходной путь, и я надеюсь, что он кому-нибудь поможет. После попыток поиска чистого jpeg.dll
файла в соответствии с ответом от @SimpleJack, используя MINGW, CYGWIN инсталляторы, я сдался, не найдя его.
Теперь, после полной установки OSGeo4W, вы увидите gdal30x.dll
в папке bin. Я просто переименовал gdal304.dll
во что-то другое, скажем, в gdal304.dll.orig
, так что он полностью пропущен.
Django продолжал работать, когда этот сломанный файл не был найден в системе.