2017-12-30 26 views
7

मैं इसे घंटों से आजमा रहा हूं और मुझे इसे हल नहीं किया जा सका। मैं विंडोज पर GeoDjango सेटअप करने के लिए this लिंक का उपयोग कर रहा हूं। मुझे निम्न त्रुटि संदेश मिल रहा है और मुझे कोई संकेत नहीं है कि क्या करना है। सभी वातावरण चर Windows में स्थापित कर रहे हैं और मुझे लगता है के रूप मेंविंडोज़ पर डीजेंगो में जीआईएस/ग्डल/ओएसजीओएस आयात त्रुटि

import gdal

बहिष्कृत है अजगर टर्मिनल में

from osgeo import gdal

सफलतापूर्वक के साथ आयात करने में सक्षम हूँ। PostgreSQL डेटाबेस में मैं के रूप में address_standardizer, fuzzystrmatch, ogr_fdw की तरह आवश्यक है, pgrouting सभी एक्सटेंशन उपलब्ध है, plpgsql, pointcloud, pointcloud_postgis, PostGIS, postgis_sfcgal, postgis_tiger_geocoder और postgis_topology

Django परियोजना सेटिंग्स:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 
     'NAME': 'postgis_24_sample', 
     'USER': 'postgres', 
     'PASSWORD': 'Hello123', 
     'HOST': 'localhost', 
     'PORT': '', 
    } 
} 

GDAL_LIBRARY_PATH = os.getenv('GDAL_LIBRARY_PATH') 
GEOS_LIBRARY_PATH = os.getenv('GEOS_LIBRARY_PATH') 

INSTALLED_APPS = [ 
    ... 
    'django.contrib.postgis', 
    ... 
] 

त्रुटि:

(easy_geodj) C:\Users\dell\Desktop\easy_geodj\easy_geodj\djlocate>python manage.py runserver 
Unhandled exception in thread started by <function wrapper at 0x066D6330> 
Traceback (most recent call last): 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\utils\autoreload.py", line 227, in wrapper 
    fn(*args, **kwargs) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run 
    autoreload.raise_last_exception() 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\utils\autoreload.py", line 250, in raise_last_exception 
    six.reraise(*_exception) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\utils\autoreload.py", line 227, in wrapper 
    fn(*args, **kwargs) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\__init__.py", line 27, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\apps\registry.py", line 108, in populate 
    app_config.import_models() 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\apps\config.py", line 202, in import_models 
    self.models_module = import_module(models_module_name) 
    File "c:\python27\Lib\importlib\__init__.py", line 37, in import_module 
    __import__(name) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\auth\models.py", line 4, in <module> 
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\auth\base_user.py", line 52, in <module> 
    class AbstractBaseUser(models.Model): 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\db\models\base.py", line 124, in __new__ 
    new_class.add_to_class('_meta', Options(meta, app_label)) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\db\models\base.py", line 330, in add_to_class 
    value.contribute_to_class(cls, name) 
    File "C:\Users\dell\Desktop\easy_geodj\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:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\db\__init__.py", line 33, in __getattr__ 
    return getattr(connections[DEFAULT_DB_ALIAS], item) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\db\utils.py", line 211, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\db\utils.py", line 115, in load_backend 
    return import_module('%s.base' % backend_name) 
    File "c:\python27\Lib\importlib\__init__.py", line 37, in import_module 
    __import__(name) 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\db\backends\postgis\base.py", line 5, in <module> 
    from .features import DatabaseFeatures 
    File "C:\Users\dell\Desktop\easy_geodj\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:\Users\dell\Desktop\easy_geodj\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:\Users\dell\Desktop\easy_geodj\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:\Users\dell\Desktop\easy_geodj\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:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\db\models\fields.py", line 3, in <module> 
    from django.contrib.gis import forms, gdal 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\forms\__init__.py", line 3, in <module> 
    from .fields import ( # NOQA 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\forms\fields.py", line 4, in <module> 
    from django.contrib.gis.geos import GEOSException, GEOSGeometry 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\geos\__init__.py", line 5, in <module> 
    from .collections import ( # NOQA 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\geos\collections.py", line 11, in <module> 
    from django.contrib.gis.geos.geometry import GEOSGeometry, LinearGeometryMixin 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\geos\geometry.py", line 11, in <module> 
    from django.contrib.gis import gdal 
    File "C:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\gdal\__init__.py", line 43, in <module> 
    from django.contrib.gis.gdal.driver import Driver # NOQA 
    File "C:\Users\dell\Desktop\easy_geodj\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:\Users\dell\Desktop\easy_geodj\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:\Users\dell\Desktop\easy_geodj\lib\site-packages\django\contrib\gis\gdal\libgdal.py", line 48, in <module> 
    lgdal = CDLL(lib_path) 
    File "c:\python27\Lib\ctypes\__init__.py", line 366, in __init__ 
    self._handle = _dlopen(self._name, mode) 
WindowsError: [Error 126] The specified module could not be found 
+0

क्या आपने 'GDAL_LIBRARY_PATH' सेट किया है? क्या आपके विंडोज़ पथ पर जीडीएएल डीएलएल हैं? –

+0

हां मैंने इसे –

+0

जोड़ा है कृपया 'c: \ python27 \ Lib \ ctypes \ __ init __। Py' खोलें और 'self._handle = _dlopen (self._name, मोड) से पहले एक पंक्ति में' प्रिंट (self._name) 'जोड़ें। 'और पोस्ट परिणाम। –

उत्तर

3

जीआईएस निर्भरता वास्तव में सही होने के लिए वास्तव में कठिन है, खासकर विंडोज़ पर। यदि आप इस ओएस के साथ रहना चाहते हैं तो मैं OsGeo4W का उपयोग जारी रखने की सलाह दूंगा।

चरण हैं, जो मेरे लिए काम किया निम्नलिखित हैं:

उन जीआईएस संकुल आप स्थापित किया है के हर वितरण की स्थापना रद्द करने और ध्यान से OSGeo4W installation instructions का पालन सुनिश्चित करें। अपाचे और मैपसेवर डिफ़ॉल्ट रूप से स्थापित होने के लिए चेक किए जाते हैं, इसलिए आप उन्हें अनचेक कर सकते हैं क्योंकि उनकी आवश्यकता नहीं है।

से आप इस तरह देखने के लिए अपनी settings.py बदल सकते हैं:

GEOS_LIBRARY_PATH = 'C:\\OSGeo4W64\\bin\\geos_c.dll' 
GDAL_LIBRARY_PATH = 'C:\\OSGeo4W64\\bin\\gdal201.dll' 

नोट 1: पथ लेकिन जहां OSGeo4W स्थापित पर निर्भर करेगा (के रूप में मुझे याद है) उन चूक रहे हैं।

नोट 2: यदि आप डाउनलोड करने और 32-बिट संस्करण स्थापित अपने रास्तों इस बजाय तरह दिखना चाहिए:

GEOS_LIBRARY_PATH = 'C:\\OSGeo4W\\bin\\geos_c.dll' 
GDAL_LIBRARY_PATH = 'C:\\OSGeo4W\\bin\\gdal201.dll' 

मैं एक ऐसी ही ढेर का उपयोग कर एक परियोजना पर काम किया और लगा कि यह बहुत आसान था गए लिनक्स पर चीजों को सेट करने के लिए (उबंटू, विशेष रूप से)। यदि यह सिर्फ एक सीखने वाली व्यक्तिगत परियोजना है या यदि यह लिनक्स मशीन पर होस्ट की गई है, तो भी मैं एक लिनक्स देव पर्यावरण के लिए जाने का सुझाव दूंगा।

उबंटू पर, उदाहरण के लिए, तुम सिर्फ कर सकते हैं:

$ sudo apt-get install binutils libproj-dev gdal-bin 

इसके अलावा GeoDjango official docs कुछ अच्छी जानकारी के लिए है।

3

मैं मैन्युअल स्थापना अपने आप को संभालने के लिए सभी प्रयास उपेक्षा होता है, और एक anaconda वातावरण का उपयोग करें। जीआईएस निर्भरता कुख्यात रूप से स्थापित करने के लिए उलझन में हैं, और एनाकोंडा ने बड़ी संख्या में किसी न किसी किनारों को सुस्त कर दिया है।

संबंधित मुद्दे