J'ai essayé de configurer mon ordinateur Windows de telle sorte que je puisse avoir une extension PostgreSQL locale avec PostGIS. Avec cela installé, j'espère pouvoir créer un projet avec geodjango localement avant de le mettre dans le cloud. Je travaille avec Django depuis un petit moment maintenant sur ma machine locale avec la base de données SQLite, mais puisque le prochain projet sera en partie basé sur des données basées sur les coordonnées, je voulais configurer le bon environnement.
Remarque sur l'importation: j'ai installé un mini-conda pour fonctionner dans un environnement séparé. J'active quand même ce "développement" de l'environnement quand je travaille
J'ai essayé de suivre la plupart des informations/didacticiels de geodjango en ligne, mais je n'arrive pas à les faire fonctionner. Ce que j'ai fait (principalement suivi ceci: https://docs.djangoproject.com/en/2.0/ref/contrib/gis/install/#windows ):
Après tout cela, j'ai créé un nouveau projet Django et dans settings.py, j'ai ajouté quelques parties:
INSTALLED_APPS = [
'Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
'Django.contrib.gis',
'nameOfMyApp',
]
J'ai également ceci dans settings.py:
DATABASES = {
'default': {
'ENGINE': 'Django.contrib.gis.db.backends.postgis',
'NAME': 'geodjango',
'USER': '****',
'PASSWORD': '****',
'Host': 'localhost',
}
}
# FOR GEODJANGO
POSTGIS_VERSION = (2, 4, 3)
Lorsque j'essaie de configurer la base de données dans Django je lance (dans le bon dossier):
python manage.py makemigrations
J'obtiens l'erreur suivante:
Django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal202", "gdal201", "gdal20", "gdal111", "gdal110", "gdal19"). Is GDAL installed? If it is, try setting GDAL_LIBRARY_PATH in your settings.
J'ai essayé de résoudre ce problème, mais rien ne semble fonctionner. Quelqu'un peut-il m'aider à mettre tout cela en place localement?
Mise à jour 7-3-2018:
Maintenant, j'obtiens l'erreur suivante:
OSError: [WinError 126] The specified module could not be found
(pendant que le .dll est là ...)
J'ai trouvé ce qui suit pour fonctionner pour Windows:
python
pour vérifier si votre python est de 32 ou 64 bits.C:\OSGeo4W
ou C:\OSGeo4W64
: Assurez-vous que les éléments suivants sont inclus dans votre settings.py
:
import os
if os.name == 'nt':
import platform
OSGEO4W = r"C:\OSGeo4W"
if '64' in platform.architecture()[0]:
OSGEO4W += "64"
assert os.path.isdir(OSGEO4W), "Directory does not exist: " + OSGEO4W
os.environ['OSGEO4W_ROOT'] = OSGEO4W
os.environ['GDAL_DATA'] = OSGEO4W + r"\share\gdal"
os.environ['PROJ_LIB'] = OSGEO4W + r"\share\proj"
os.environ['PATH'] = OSGEO4W + r"\bin;" + os.environ['PATH']
Courir python manage.py check
pour vérifier que geodjango fonctionne correctement.
Dans mon cas ((Windows10Pro + Python3.7.1), la présence de la DLL (choisie automatiquement) n'était pas suffisante, à savoir gdal111.dll
.
J'ai réalisé que j'avais aussi gdal204.dll
situé à C:\OSGeo4W\bin
et a essayé d'enrichir la variable de liste nommée lib_names
avec 'gdal204'
, à la ligne 24 (concernant les bibliothèques partagées Windows NT) de %PYTHON_ROOT%\Lib\site-packages\Django\contrib\gis\gdal\libgdal.py
, c'est à dire.
#[...]
Elif os.name == 'nt':
# Windows NT shared libraries
lib_names = ['gdal204', 'gdal202', 'gdal201', 'gdal20', 'gdal111', 'gdal110', 'gdal19']
#[...] ^^^^^^^
Pas de conséquences négatives pour l'instant.