Django: "django .contrib.gis.gdal.prototypes.ds" вылетает с "attributeerror: символ не найден" - PullRequest
1 голос
/ 18 марта 2020

Выпуск последней Django (3.0.4) Теперь я получаю это:

  File "[...]site-packages/django/contrib/gis/gdal/driver.py", line 5, in <module>
    from django.contrib.gis.gdal.prototypes import ds as vcapi, raster as rcapi
  File "[...]site-packages/django/contrib/gis/gdal/prototypes/ds.py", line 71, in <module>
    get_field_as_integer64 = int64_output(lgdal.OGR_F_GetFieldAsInteger64, [c_void_p, c_int])
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ctypes/__init__.py", line 361, in __getattr__
    func = self.__getitem__(name)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ctypes/__init__.py", line 366, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: dlsym(0x101667060, OGR_F_GetFieldAsInteger64): symbol not found

Мои наблюдения:

Я [уточнил] имена путей, которые относятся к Django в моей виртуальной среде. Я замечаю, что модуль, который фактически выходит из строя, находится в /Library/Frameworks/Python.framework/ ... это на Macinto sh OS / X Catalina.

Версия Python, установленная на этом компьютере, - 3.6.4. (Версия на хостинге значительно старше ... 3.4.)

Это, как я подозреваю, проблема с установкой Python на этом компьютере? (Самая последняя версия, которую можно установить здесь - 3.7.7.)


РЕДАКТИРОВАТЬ: НЕТ, это не так!

После установки Django 3.0.4 на Linux хосте я получил это:

 AttributeError: /usr/local/lib/libgdal.so.1: undefined symbol: OGR_F_GetFieldAsInteger64

Теперь, опять же, это общесистемная библиотека, которая вызывается, но теперь я подозреваю, что причина проблемы root на самом деле находится в этой строке:

   File "[...]/lib/python3.6/site-packages/django/contrib/gis/gdal/prototypes/ds.py", line 71, in <module>
get_field_as_integer64 = int64_output(lgdal.OGR_F_GetFieldAsInteger64, [c_void_p, c_int])

Сейчас я откатываю Django версии назад, чтобы посмотреть, смогу ли я устранить проблему go и если да, то «ответь на мой вопрос».

1 Ответ

0 голосов
/ 18 марта 2020

Мне пришлось пройти назад до Django 2.1 , прежде чем проблема наконец исчезла.

libgdal версия 1.6 установлена ​​на виртуальной машине этого компьютера - окружающая среда, и я не знаю, насколько это практично или невозможно для меня, чтобы изменить это. («g cc» установлено здесь, «configure» - нет.)

...