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 находится там

Image of the folder

Мой Python имеет версию 3.10.6. Django - версия 4.1

Я уже неделю пытаюсь решить эту проблему самостоятельно, но постепенно у меня не осталось ни одной идеи, что делать

Я тоже столкнулся с этой проблемой, поскольку сегодня я обновил свою старую установку GEO Django Setup.

Вы можете использовать образ Docker, как предлагают другие, но я предпочитаю нативное решение, поскольку не хочу запускать Docker каждый раз, когда начинаю кодировать.

Ваше решение находится в скобках: (или одна из его зависимостей)

Вы можете посмотреть переходные зависимости из gdal304.dll. Для этого существует несколько инструментов (см. здесь). Сейчас я использую интегрированный в Git MinGW - Shell, в котором установлено ldd. Это должно быть так для любой (более новой) установки Git на Windows.

enter image description here

Как вы можете видеть, некоторые зависимости уже выполнены из вашей операционной системы. Другие, которые отсутствуют, должны быть заполнены из OSGeo4W. Если вы сравните это с вашим каталогом bin из OSGeo4W, вы увидите проблему:

enter image description here

К сожалению, простое "переименование" не помогло. Мне повезло, и я еще не удалил свою старую версию OSGeo4W. В старых файлах я нашел необходимую DLL.

enter image description here

Короче говоря, вам нужен файл 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 продолжал работать, когда этот сломанный файл не был найден в системе.

enter image description here

Вернуться на верх