Essayer d'installer un GeoDjango sur ma machine. Je suis vraiment nouveau à Python et être amené dans un projet qui a été une installation très délicate pour les autres membres de l'équipe. J'ai installé Python 2.7 et GEOS en utilisant brew et en exécutant PSQL 9.2.4 mais continuez à obtenir cette erreur lorsque j'essaie de faire fonctionner le serveur Web:
__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"
Impossible de trouver quelque chose de pertinent pour cette trace sur SO ou sur le Web. Je pense que cela pourrait être un échec d'expression régulière? J'essaie actuellement de réinstaller PSQL et GEOS pour voir si je peux l'obtenir fonctionnement.
Voici mon fichier d'exigences:
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
C'est ma solution (évidemment c'est moche, comme mon anglais, mais ça marche). Le problème est que la chaîne des versions a un espace blanc indésirable dans le RegEx.
L'erreur dit:
GEOSException: impossible d'analyser la chaîne d'informations de version "3.4.2-CAPI-1.8.2 r3921"
Et geos_version_info prévient:
L'expression régulière doit pouvoir analyser les chaînes de version telles que '3.0.0rc4-CAPI-1.3.3', '3.0.0-CAPI-1.4.1' ou '3.4.0dev-CAPI -1.8.0 '
Modifier ce fichier: site-packages/Django/contrib/gis/geos/libgeos.py
Recherchez la fonction: geos_version_info
Et changez cette ligne:
ver = geos_version().decode()
Avec cette ligne:
ver = geos_version().decode().split(' ')[0]
Dans la dernière installation de GEOS, la réponse ci-dessus n'a pas fonctionné ... mais était proche du problème.
J'ai changé l'expression régulière juste au-dessus de geos_version_info (): de:
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+)$')
être:
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+).*$')
Remarquez le. * Ajouté à la fin de l'expression régulière.
Je pense que c'est encore cassé. Une récente mise à niveau sur notre serveur FreeBSD a conduit à cette erreur:
Django.contrib.gis.geos.error.GEOSException: Could not parse version info string "3.6.2-CAPI-1.10.2 4d2925d6"
Il semble que l'expression régulière dans libgeos.py
De Django doive être mise à jour à nouveau pour tenir compte de cette syntaxe différente. La solution de Nachopro sert toujours de solution de contournement.
Il semble que cela a été corrigé dans Django à partir de mars dernier environ. Voir aussi bogue Django 20036 . La mise à niveau vers Django 1.5.4 résoudra le problème.
Cela peut être résolu en essayant ce qui suit,
brew switch geos 3.6.1
J'ai résolu le problème en installant PostGIS avec Postgres en utilisant https://postgresapp.com/downloads.html .