Geodjango Exception when importing django.contrib.gis.gdal: OSError: /usr/lib/libgdal.so.1: undefined symbol: sqlite3_column_table_name

僤鯓⒐⒋嵵緔 提交于 2019-12-11 00:27:59

问题


I have followed the tutorial for installing Geodjango on my Ubuntu 14.04. I am using Django 1.10 and Python 3.5, postgres-9.6 and postgis 2.3.

I have checked here and here, but found no solution. In a newly installed ubuntu 14.04 Virtual Machine, it worked.

But in my installation, when I tried making migrations, I got: OSError: /usr/lib/libgdal.so.1: undefined symbol: sqlite3_column_table_name

Investigating a bit further, I tried simply:

from django.contrib.gis import gdal

And got:

Traceback (most recent call last):   
File "<stdin>", line 1, in <module>   
File "/home/pv/anaconda3/envs/dj110py35/lib/python3.5/site-packages/django/contrib/gis/gdal/__init__.py", line 49, in <module>
    from django.contrib.gis.gdal.driver import Driver  # NOQA   
File "/home/pv/anaconda3/envs/dj110py35/lib/python3.5/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 "/home/pv/anaconda3/envs/dj110py35/lib/python3.5/site-packages/django/contrib/gis/gdal/prototypes/ds.py", line 9, in <module>
    from django.contrib.gis.gdal.libgdal import GDAL_VERSION, lgdal   
File "/home/pv/anaconda3/envs/dj110py35/lib/python3.5/site-packages/django/contrib/gis/gdal/libgdal.py", line 48, in <module>
    lgdal = CDLL(lib_path)   
File "/home/pv/anaconda3/envs/dj110py35/lib/python3.5/ctypes/__init__.py", line 347, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /usr/lib/libgdal.so.1: undefined symbol: sqlite3_column_table_name

Is there any suggestions on how I could repair my setup?

UPDATE

It seems to be a problema with my conda environment. When I started using a pip virtualenv, the problem did not arise anymore. I am not answering the question, because I could not find the solution, only a workaround. But rebuilding the environment with pip virtualenv works.


回答1:


In conda environment: conda install -c conda-forge gdal=2.2.1

In django settings.py: GDAL_LIBRARY_PATH = '<HOME>/anaconda3/envs/<env_name>/lib/libgdal.so'




回答2:


I was having this issue as well and the specifying

GDAL_LIBRARY_PATH = <HOME>/anaconda3/envs/<env_name>/lib/libgdal.so

(in project.settings or os.environ.setdefault) led to

libicui18n.so.56: cannot open shared object file: No such file or directory. 

The fix that worked for me was to upgrade icu:

conda install -c conda-forge icu=58

Upgrading icu lead to some changes in other package versions as well (qt downgraded from 5.6.2-4 to 5.6.2-3, the rest upgraded).




回答3:


I simply run under my conda environment:

conda install gdal

Guy de Carufel's solution did not work for me, though he pointed to a correct direction, thanks



来源:https://stackoverflow.com/questions/41521577/geodjango-exception-when-importing-django-contrib-gis-gdal-oserror-usr-lib-li

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!