【发布时间】:2019-07-25 21:46:17
【问题描述】:
完全坚持这一点。
尝试使用 PostGIS 在 Python 3.6.3 virtualenv 中运行 Django (django==1.11.9)。 HighSierra 10.13.6.
最初我通过自制软件安装了 gdal2。 brew 安装 GDAL 2.4.0
当我运行 make 时:
CPLUS_INCLUDE_PATH=/usr/include/gdal \
C_INCLUDE_PATH=/usr/include/gdal \
pip install GDAL==$(gdal-config --version | cut -f-2 -d'.')
Collecting GDAL==2.2
Installing collected packages: GDAL
Found existing installation: GDAL 2.4.0
Uninstalling GDAL-2.4.0:
Successfully uninstalled GDAL-2.4.0
Successfully installed GDAL-2.2.0
python manage.py migrate
...
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/db/backends/postgis/base.py", line 6, in <module>
from .features import DatabaseFeatures
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/db/backends/postgis/features.py", line 1, in <module>
from django.contrib.gis.db.backends.base.features import BaseSpatialFeatures
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/db/backends/base/features.py", line 4, in <module>
from django.contrib.gis.db.models import aggregates
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/db/models/__init__.py", line 3, in <module>
from django.contrib.gis.db.models.aggregates import * # NOQA
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/db/models/aggregates.py", line 1, in <module>
from django.contrib.gis.db.models.fields import ExtentField
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/db/models/fields.py", line 3, in <module>
from django.contrib.gis import forms, gdal
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/forms/__init__.py", line 3, in <module>
from .fields import ( # NOQA
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/forms/fields.py", line 4, in <module>
from django.contrib.gis.geos import GEOSException, GEOSGeometry
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/geos/__init__.py", line 5, in <module>
from .collections import ( # NOQA
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/geos/collections.py", line 11, in <module>
from django.contrib.gis.geos.geometry import GEOSGeometry, LinearGeometryMixin
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/geos/geometry.py", line 11, in <module>
from django.contrib.gis import gdal
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/gdal/__init__.py", line 28, in <module>
from django.contrib.gis.gdal.datasource import DataSource
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/gdal/datasource.py", line 39, in <module>
from django.contrib.gis.gdal.driver import Driver
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/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 "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/gdal/prototypes/ds.py", line 9, in <module>
from django.contrib.gis.gdal.libgdal import GDAL_VERSION, lgdal
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/gdal/libgdal.py", line 49, in <module>
lgdal = CDLL(lib_path)
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/ctypes/__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: dlopen(libgdal.so, 6): image not found
我尝试了几种不同的卸载、安装和符号链接(以及禁用 csrutil)。
假设可能是 GDAL 版本问题,我通过以下方式从 brew install 的 2.4 降级到 2.3.2:http://www.kyngchaos.com/software/frameworks/
$ gdal-config --version
2.3.2
$ pip3 install gdal==2.3.2
changing mode of build/bdist.macosx-10.13-x86_64/wheel/GDAL-2.3.2.data/scripts/gdal_auth.py to 755
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/qw/bp7lqd0914q6xxqq01017h1h0000gn/T/pip-install-rnubsult/gdal/setup.py", line 435, in <module>
setup(**setup_kwargs)
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/distutils/core.py", line 148, in setup
dist.run_commands()
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/wheel/bdist_wheel.py", line 213, in run
archive_basename = self.get_archive_basename()
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/wheel/bdist_wheel.py", line 161, in get_archive_basename
impl_tag, abi_tag, plat_tag = self.get_tag()
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/wheel/bdist_wheel.py", line 155, in get_tag
assert tag == supported_tags[0]
AssertionError
----------------------------------------
Failed building wheel for gdal
Running setup.py clean for gdal
Failed to build gdal
Installing collected packages: gdal
Found existing installation: GDAL 2.3.0
Uninstalling GDAL-2.3.0:
Successfully uninstalled GDAL-2.3.0
Running setup.py install for gdal ... done
Successfully installed gdal-2.3.2
但还是一样的错误:
...
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/site-packages/django/contrib/gis/gdal/libgdal.py", line 49, in <module>
lgdal = CDLL(lib_path)
File "/Users/me/.pyenv/versions/3.6.3/lib/python3.6/ctypes/__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: dlopen(libgdal.so, 6): image not found
make: *** [update] Error 1
$ sudo find / -name libgdal.so
将返回多个“不允许的操作”,因此这似乎是系统权限或安全问题?
有什么建议吗?
谢谢
【问题讨论】:
-
我在尝试安装 gdal 时遇到过几次这样的问题。您是否一直在使用 python 或 python3 安装 gdal。您的帖子说 3.6,但看起来您使用的是 python/pip 而不是 python3/pip3?根据我使用自制软件安装 gdal 的经验,它不会安装所需的依赖项或安装不匹配的版本。您必须自己寻找丢失/不匹配的版本来处理依赖关系。您是否按照 geodjango 上的指南进行操作?您可能还想尝试改用 anaconda,它过去对我有用。
-
忽略 python3/pip3 我看到你已经尝试过了。
-
感谢@Taylor 是的,这是一个糟糕的地方,不幸的是主要是我自己做的。我有:org.gdal.gdal22-framework-yosemite org.gdal.gdal21-framework-mtlion org.gdal.gdal23-framework-elcapitan 我认为我最好的选择是尝试卸载它们并重新开始
-
重新开始不是一个坏选择。我建议使用 conda 尝试它,因为它带有许多所需的依赖项。
-
一个考虑因素是我在 python 3.6 环境中,而 conda 需要 python 3.7。但可能需要 conda 作为最后的手段
标签: python django path filepath gdal