python - 属性错误 : function 'initGEOS_r' not found

标签 python django geodjango

Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\autoreload.py", line 76, in raise_last_exception
    raise _exception[1]
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\__init__.py", line 357, in execute
    autoreload.check_errors(django.setup)()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\apps\registry.py", line 122, in populate
    app_config.ready()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\apps.py", line 24, in ready
    self.module.autodiscover()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\__init__.py", line 26, in autodiscover
    autodiscover_modules('admin', register_to=site)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\module_loading.py", line 47, in autodiscover_modules
    import_module('%s.%s' % (app_config.name, module_to_search))
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\admin\__init__.py", line 5, in <module>
    from django.contrib.gis.admin.options import GeoModelAdmin, OSMGeoAdmin
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\admin\options.py", line 2, in <module>
    from django.contrib.gis.admin.widgets import OpenLayersWidget
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\admin\widgets.py", line 4, in <module>
    from django.contrib.gis.geos import GEOSException, GEOSGeometry
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\geos\__init__.py", line 5, in <module>
    from .collections import (  # NOQA
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\geos\collections.py", line 8, in <module>
    from django.contrib.gis.geos.geometry import GEOSGeometry, LinearGeometryMixin
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\geos\geometry.py", line 17, in <module>
    from django.contrib.gis.geos.prototypes.io import (
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\geos\prototypes\io.py", line 212, in <module>
    class WKBWriter(IOBase):
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\geos\prototypes\io.py", line 216, in WKBWriter
    geos_version = geos_version_tuple()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\geos\libgeos.py", line 174, in geos_version_tuple
    return get_version_tuple(geos_version().decode())
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\geos\libgeos.py", line 169, in geos_version
    return lgeos.GEOSversion()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\functional.py", line 224, in inner
    self._setup()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\functional.py", line 360, in _setup
    self._wrapped = self._setupfunc()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\gis\geos\libgeos.py", line 66, in load_geos
    _lgeos.initGEOS_r.restype = CONTEXT_PTR
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\ctypes\__init__.py", line 382, in __getattr__
    func = self.__getitem__(name)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\ctypes\__init__.py", line 387, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'initGEOS_r' not found

我在尝试运行我的服务器时收到AttributeError: function 'initGEOS_r' not found 错误。 我正在尝试编写一个基本的 Geo Django 程序 我还安装了 Postgres 和 GEOS

我还在我的 settings.py 文件中包含了 GEOS 和 GDAL 路径。

我已经尝试了所有可能的方法来解决此错误,但无法解决。 有人可以帮帮我吗!

最佳答案

我遇到了同样的问题,这对我有用:

  1. 在 settings.py 上写:
GDAL_LIBRARY_PATH = r'C:\OSGeo4W64\bin\gdal204'
GEOS_LIBRARY_PATH = r'C:\OSGeo4W64\bin\geos_c.dll'
PROJ_LIBRARY_PATH = r'C:\OSGeo4W64\share\proj'
  1. 在 settings.py 上的 INSTALLED_APPS 代码:

'django.contrib.gis',

  1. 将 postgis 添加到后端
DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'xxx',
        'USER': 'yyy',
        'PASSWORD': 'xxx',
        'HOST': '',
        'PORT': '1234',
    }
}

记住你的模型应该继承自 从 django.contrib.gis.db 导入模型

希望对你有帮助

关于python - 属性错误 : function 'initGEOS_r' not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62411510/

相关文章:

python - 如何分配给 Django PointField 模型属性?

python - django,基于位置的搜索

python - 如何使用 Pandas 用不同的随机值替换列中的每个 NaN?

python - 如何将数据框中的值更改为值列表?

django - Django 模板中的静态文本到动态文本

python - 将 Django 应用程序部署到 AWS 时出现 "ValueError: too many values to unpack"

python - 如何在三个字段上使用partitionby对字段中的所有值进行配对

python - pdfkit-python : 'str' object has no attribute decode

python - 如何在 Django 中为 Chatterbot 指定自定义语料库路径?

python - 如何在 Geodjango/GEOS 中将千米转换为度数?