Je l'ai déjà fait une douzaine de fois auparavant, mais quelque chose ne fonctionne pas cette fois-ci.
Après les docs:
https://docs.djangoproject.com/fr/1.11/ref/contrib/gis/install/#windows
J'essaie de configurer GeoDjango sur une machine Windows (celle-ci est une version virtuelle de Windows 10 configurée sur paperspace.com). Il semble y avoir un problème avec mes paramètres PATH, mais je ne peux pas comprendre ce que c'est. J'ai exécuté les commandes mises en évidence dans les instructions. J'ai vérifié mes variables PATH et tout semble aller pour le mieux. J'ai essayé de leur indiquer les versions 32 bits et 64 bits d'OSGeo4Win. Quoi qu'il en soit, je reçois à chaque fois la sortie suivante:
C:\Python\lib\site-packages\floppyforms\__init__.py:21: UserWarning: Unable to import floppyforms.gis, geometry widgets not available
"Unable to import floppyforms.gis, geometry widgets not available")
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "C:\Python\lib\site-packages\Django\core\management\__init__.py", line 363, in execute_from_command_line
utility.execute()
File "C:\Python\lib\site-packages\Django\core\management\__init__.py", line 337, in execute
Django.setup()
File "C:\Python\lib\site-packages\Django\__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Python\lib\site-packages\Django\apps\registry.py", line 108, in populate
app_config.import_models()
File "C:\Python\lib\site-packages\Django\apps\config.py", line 202, in import_models
self.models_module = import_module(models_module_name)
File "C:\Python\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "C:\Python\lib\site-packages\Django\contrib\auth\models.py", line 4, in <module>
from Django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "C:\Python\lib\site-packages\Django\contrib\auth\base_user.py", line 52, in <module>
class AbstractBaseUser(models.Model):
File "C:\Python\lib\site-packages\Django\db\models\base.py", line 124, in __new__
new_class.add_to_class('_meta', Options(meta, app_label))
File "C:\Python\lib\site-packages\Django\db\models\base.py", line 330, in add_to_class
value.contribute_to_class(cls, name)
File "C:\Python\lib\site-packages\Django\db\models\options.py", line 214, in contribute_to_class
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "C:\Python\lib\site-packages\Django\db\__init__.py", line 33, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "C:\Python\lib\site-packages\Django\db\utils.py", line 211, in __getitem__
backend = load_backend(db['ENGINE'])
File "C:\Python\lib\site-packages\Django\db\utils.py", line 115, in load_backend
return import_module('%s.base' % backend_name)
File "C:\Python\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "C:\Python\lib\site-packages\Django\contrib\gis\db\backends\postgis\base.py", line 5, in <module>
from .features import DatabaseFeatures
File "C:\Python\lib\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 "C:\Python\lib\site-packages\Django\contrib\gis\db\backends\base\features.py", line 4, in <module>
from Django.contrib.gis.db.models import aggregates
File "C:\Python\lib\site-packages\Django\contrib\gis\db\models\__init__.py", line 3, in <module>
from Django.contrib.gis.db.models.aggregates import * # NOQA
File "C:\Python\lib\site-packages\Django\contrib\gis\db\models\aggregates.py", line 1, in <module>
from Django.contrib.gis.db.models.fields import ExtentField
File "C:\Python\lib\site-packages\Django\contrib\gis\db\models\fields.py", line 3, in <module>
from Django.contrib.gis import forms, gdal
File "C:\Python\lib\site-packages\Django\contrib\gis\forms\__init__.py", line 3, in <module>
from .fields import ( # NOQA
File "C:\Python\lib\site-packages\Django\contrib\gis\forms\fields.py", line 4, in <module>
from Django.contrib.gis.geos import GEOSException, GEOSGeometry
File "C:\Python\lib\site-packages\Django\contrib\gis\geos\__init__.py", line 5, in <module>
from .collections import ( # NOQA
File "C:\Python\lib\site-packages\Django\contrib\gis\geos\collections.py", line 11, in <module>
from Django.contrib.gis.geos.geometry import GEOSGeometry, LinearGeometryMixin
File "C:\Python\lib\site-packages\Django\contrib\gis\geos\geometry.py", line 11, in <module>
from Django.contrib.gis import gdal
File "C:\Python\lib\site-packages\Django\contrib\gis\gdal\__init__.py", line 28, in <module>
from Django.contrib.gis.gdal.datasource import DataSource
File "C:\Python\lib\site-packages\Django\contrib\gis\gdal\datasource.py", line 39, in <module>
from Django.contrib.gis.gdal.driver import Driver
File "C:\Python\lib\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 "C:\Python\lib\site-packages\Django\contrib\gis\gdal\prototypes\ds.py", line 9, in <module>
from Django.contrib.gis.gdal.libgdal import GDAL_VERSION, lgdal
File "C:\Python\lib\site-packages\Django\contrib\gis\gdal\libgdal.py", line 44, in <module>
'GDAL_LIBRARY_PATH in your settings.' % '", "'.join(lib_names)
Django.contrib.gis.gdal.error.GDALException: Could not find the GDAL library (tried "gdal111", "gdal110", "gdal19", "gdal18", "gdal17"). Try setting GDAL_LIBRARY_PATH in your settings.
Quelqu'un a-t-il une idée?
MISE À JOUR: Je suis allé au magasin et j'ai acheté un nouvel ordinateur portable et je rencontre toujours le même problème. Pourrait-il s'agir d'un problème de gestion de version avec certaines des dépendances de GeoDjango? Je ne sais pas quoi faire, mais c'est une sorte d'urgence pour moi.
Le problème a fini par être une incompatibilité de version entre Django et GDAL . Django ne cherchait pas le nom de fichier correct (gdal202.dll
dans mon cas).
Pour le corriger, il m'a fallu ajouter str('gdal202')
au fichier suivant, à la ligne 26:
(Python Root)\Lib\site-packages\Django\contrib\gis\gdal\libgdal.py
Si ce problème se reproduit, vous pouvez consulter votre répertoire OSGeo4W\bin
pour déterminer le gdalxxx.dll
que Django doit rechercher.
Ajouter
GDAL_LIBRARY_PATH = r'C:\OSGeo4W64\bin\gdal202'
aux paramètres Django a fonctionné pour moi
Si vous utilisez le didacticiel Django et installez GDAL via OSGeo4W, lorsque vous modifiez l'environnement Windows, assurez-vous d'avoir défini les versions appropriées de Python et OSGeo4W.
Par exemple, lors de l'installation d'OSGeo4W 64 bits, le chemin de l'environnement doit être défini:
set OSGEO4W_ROOT=C:\OSGeo4W64
et pour Python 3.5.2:
set PYTHON_ROOT=C:\Python36
Assurez-vous de ne pas confondre les installations Python d’une machine virtuelle avec le système Python.
Installez uniquement Django après vous avez correctement modifié l'environnement.
En plus des commentaires précédents. Vous avez peut-être un [WinError 127] La procédure spécifiée est introuvable.
Cela semble dû à plusieurs sqlite3.dll sur votre système. Si le chemin frappe les premiers, un conflit apparaît pour gdal202.
Vous pouvez étendre les réponses adam starr en ajoutant également un changement de répertoire de travail.
#Set working directory to actual working directoy of gdal
#This is required to prevent any conflicts with older SQLITE versions,
#f.e. in python path
#Prevents error in GDAL 202
#BASE_WORKINGDIRECTORY to change it back later if you need to
BASE_WORKDIRECTORY = os.getcwd()
os.chdir(os.path.dirname(lib_path))
# This loads the GDAL/OGR C library
lgdal = CDLL(lib_path)
Pour moi, ce problème a été résolu sur Windows
en ajoutant simplement le chemin du package osgeo
python aux variables d'environnement (C:\Python36\Lib\site-packages\osgeo). Il semble qu'après cela, Django ait réussi à trouver le fichier gdal202.dll
.
Solution:
pip install GDAL
, si cela ne fonctionne pas, installez-le à partir de la roue: https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal } a) Si vous utilisez un environnement virtuel, ajoutez simplement ce code à settings.py : os.environ["PATH"] += os.pathsep + BASE_DIR + '\\venv\\Lib\\site-packages\\osgeo'
b) Sinon, ajoutez ce code:
from distutils.sysconfig import get_python_lib
os.environ["PATH"] += os.pathsep + get_python_lib() + '\\osgeo'
Quand cela se produit, cela pose un problème comme celui-ci entrez la description de l'image ici
Peut-être que la bibliothèque dll (gdal202.dll) ne fonctionne pas. Afin que nous puissions remplacer la bibliothèque GDAL complète par GDAL-whl-package à partir de https://download.lfd.uci.edu/pythonlibs/ r5uhg2lo/GDAL-2.3.2-cp36-cp36m-win_AMD64.whl Téléchargez ce paquet whl, renommez-le en GDAL-2.3.2-cp36-cp36m-win_AMD64.whl.Zip entrez la description de l'image ici extrayez le dossier osgeo à un endroit (D:\ProgramData\osgeo) et modifiez le fichier GDAL_DATA PROJ_LIB et le chemin d'accès à son sous-dossier.
ce qui signifie changer l'environnement Windows de
set OSGEO4W_ROOT=C:\OSGeo4W
set PYTHON_ROOT=C:\Python3X
set GDAL_DATA=%OSGEO4W_ROOT%\share\gdal
set PROJ_LIB=%OSGEO4W_ROOT%\share\proj
set PATH=%PATH%;%PYTHON_ROOT%;%OSGEO4W_ROOT%\bin
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /f /d "%PATH%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v GDAL_DATA /t REG_EXPAND_SZ /f /d "%GDAL_DATA%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROJ_LIB /t REG_EXPAND_SZ /f /d "%PROJ_LIB%"
à
set OSGEO4W_ROOT=D:\ProgramData\osgeo
set PYTHON_ROOT=C:\Python3X
set GDAL_DATA=%OSGEO4W_ROOT%\data\gdal
set PROJ_LIB=%OSGEO4W_ROOT%\data\proj
set PATH=%PATH%;%PYTHON_ROOT%;%OSGEO4W_ROOT%\bin
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /f /d "%PATH%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v GDAL_DATA /t REG_EXPAND_SZ /f /d "%GDAL_DATA%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROJ_LIB /t REG_EXPAND_SZ /f /d "%PROJ_LIB%"
PS: n'oubliez pas de renommer "D:\ProgramData\osgeo\gdal203.dll" en "D:\ProgramData\osgeo\gdal202.dll"