pointfield installing how python django homebrew geodjango

python - installing - how to use geodjango



Error de GeoDjango GEOSException (6)

Creo que esto está roto de nuevo. Una actualización reciente en nuestro servidor FreeBSD llevó a este error:

django.contrib.gis.geos.error.GEOSException: Could not parse version info string "3.6.2-CAPI-1.10.2 4d2925d6"

Parece que la expresión regular en libgeos.py de Django necesita actualizarse nuevamente para tener en cuenta esta sintaxis diferente. La solución de Nachopro todavía sirve como solución alternativa.

Tratando de instalar un GeoDjango en mi máquina. Soy realmente nuevo en Python y me han incorporado a un proyecto que ha sido una instalación muy difícil para los otros miembros del equipo. Instalé Python 2.7 y GEOS usando brew, y ejecutando PSQL 9.2.4 pero sigo recibiendo este error cuando intento que el servidor web funcione:

__import__(name) File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site packages/django/contrib/gis/geometry/backend/geos.py", line 1, in <module> from django.contrib.gis.geos import ( File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site packages/django/contrib/gis/geos/__init__.py", line 6, in <module> from django.contrib.gis.geos.geometry import GEOSGeometry, wkt_regex, hex_regex File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site packages/django/contrib/gis/geos/geometry.py", line 14, in <module> from django.contrib.gis.geos.coordseq import GEOSCoordSeq File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site- packages/django/contrib/gis/geos/coordseq.py", line 9, in <module> from django.contrib.gis.geos.libgeos import CS_PTR File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site- packages/django/contrib/gis/geos/libgeos.py", line 119, in <module> _verinfo = geos_version_info() File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site packages/django/contrib/gis/geos/libgeos.py", line 115, in geos_version_info if not m: raise GEOSException(''Could not parse version info string "%s"'' % ver) django.contrib.gis.geos.error.GEOSException: Could not parse version info string "3.4.2-CAPI-1.8.2 r3921"

Parece que no puede encontrar nada relevante para esta traza en SO o en la web. Creo que podría ser un fracaso de expresiones regulares? Actualmente estoy tratando de reinstalar PSQL y GEOS para ver si puedo hacerlo funcionar.

Aquí está mi archivo de requisitos:

django==1.4 psycopg2==2.4.4 py-bcrypt==0.4 python-memcached==1.48 south==0.7.3 # Debug Tools sqlparse==0.1.3 django-debug-toolbar==0.9.1 django-devserver==0.3.1 # Deployment fabric==1.4 # AWS # boto==2.1.1 django-storages==1.1.4 django-ses==0.4.1 # ECL http://packages.elmcitylabs.com/ecl_django-0.5.3.tar.gz#ecl_django http://packages.elmcitylabs.com/ecl_google-0.2.14.tar.gz#ecl_google # https://packages.elmcitylabs.com/ecl_tools-0.3.7.tar.gz#ecl_tools # https://packages.elmcitylabs.com/chargemaster-0.2.19.tar.gz # https://packages.elmcitylabs.com/ecl_facebook-0.3.12.tar.gz#ecl_facebook # https://packages.elmcitylabs.com/ecl_twitter-0.3.3.tar.gz#ecl_twitter # Search #https://github.com/elmcitylabs/django-haystack/tarball/issue-522#django-haystack -e git+https://github.com/toastdriven/django-haystack.git#egg=django-haystack pysolr==2.1.0-beta # whoosh==2.3.2 # Misc # PIL # django-shorturls==1.0.1 # suds==0.4 django-mptt sorl-thumbnail stripe pytz==2013b


En la última instalación de GEOS, la respuesta anterior no funcionó ... pero estuvo cerca del problema.

Cambié la expresión regular justo encima de geos_version_info (): desde:

version_regex = re.compile(r''^(?P<version>(?P<major>/d+)/.(?P<minor>/d+)/.(?P<subminor>/d+))((rc(?P<release_candidate>/d+))|dev)?-CAPI-(?P<capi_version>/d+/./d+/./d+)$'')

ser:

version_regex = re.compile(r''^(?P<version>(?P<major>/d+)/.(?P<minor>/d+)/.(?P<subminor>/d+))((rc(?P<release_candidate>/d+))|dev)?-CAPI-(?P<capi_version>/d+/./d+/./d+).*$'')

Observe el. * Agregado al final de la expresión regular.


Esta es mi solución (obviamente es fea, como mi inglés, pero funciona). El problema es que la cadena de versiones tiene un espacio en blanco no deseado en el RegEx.

El error dice:

GEOSException: No se pudo analizar la cadena de información de versión "3.4.2-CAPI-1.8.2 r3921"

Y el geos_version_info advierte:

La expresión regular debe poder analizar cadenas de versión como ''3.0.0rc4-CAPI-1.3.3'', ''3.0.0-CAPI-1.4.1'' o ''3.4.0dev-CAPI-1.8.0''

Edite este archivo: site-packages / django / contrib / gis / geos / libgeos.py

Busque la función: geos_version_info

Y cambia esta línea:

ver = geos_version().decode()

Con esta línea:

ver = geos_version().decode().split('' '')[0]


Esto se puede arreglar intentando lo siguiente,

cambio de cerveza geos 3.6.1


Para aquellas personas que no tienen 3.6.1 previamente instalado:

  1. brew unlink geos
  2. Instale 3.6.1 con brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/145b22e8330e094ee148861e72e26c03e73d34a1/Formula/geos.rb .
  3. brew info geos debe mostrar brew info geos 3.6.1 estrellado: