web-dev-qa-db-ja.com

Windows上のGeoDjango: "GDALライブラリが見つかりませんでした" / "OSError:[WinError 126]指定されたモジュールが見つかりませんでした"

PostGIS拡張機能を備えたローカルのpostgreSQLを使用できるように、Windowsコンピューターをセットアップしようとしています。これをインストールすると、geodangoを使用してプロジェクトをクラウドに配置する前にローカルで作成できるようになります。私はしばらくの間、SQLite DBを使用してローカルマシンでDjangoを使用していましたが、次のプロジェクトは部分的に座標ベースのデータに基づいているため、適切な環境をセットアップしました。

注をインポート:別の環境で実行するためにmini-condaをインストールしました。作業するときにこの環境の「開発」を有効にします

私はほとんどのジオジャンゴ情報/チュートリアルをオンラインで追跡しようとしましたが、機能しません。私がやったこと(主にこれに従った: https://docs.djangoproject.com/en/2.0/ref/contrib/gis/install/#windows ):

  1. https://www.enterprisedb.com/downloads/postgres-postgresql-downloads から最新の(10.3)PostgreSQLセットアップをダウンロードしてインストールします
  2. インストール後、Application Stack Builderを使用してPostGisをインストールしました。
  3. OSGeo4Wを https://trac.osgeo.org/osgeo4w/ からインストールしました
  4. Geodjango Webサイトで説明されているようにバッチスクリプトを作成し( https://docs.djangoproject.com/en/2.0/ref/contrib/gis/install/#windows )、次のように実行しました。管理者(パスをpythonに設定する部分を除き、原因pythonは、しばらくの間、pythonを使用していたため、既にそこにありました)
  5. Psqlシェルでいくつかのコマンドを試しましたが、名前:geodjango、ユーザー名:****、パス:****でデータベースを作成したと思います。
  6. Geodjangoユーザーにすべての特権を与えたかどうかはわかりませんが、そうだと思います。

このすべての後、新しいDjango=プロジェクトを作成し、settings.pyにいくつかのパーツを追加しました。

INSTALLED_APPS = [
'Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
'Django.contrib.gis',
'nameOfMyApp',
]

私はこれをsettings.pyにも持っています:

DATABASES = {
'default': {
    'ENGINE': 'Django.contrib.gis.db.backends.postgis',
    'NAME': 'geodjango',
    'USER': '****',
    'PASSWORD': '****',
    'Host': 'localhost',
}
}

# FOR GEODJANGO
POSTGIS_VERSION = (2, 4, 3)

Djangoでデータベースをセットアップしようとすると、(正しいフォルダーで)実行されます:

python manage.py makemigrations

次のエラーが表示されます。

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.

私はそれを修正しようとしましたが、何もうまくいかないようです。誰も私にこれをすべてローカルに設定するのに助けてくれますか?

更新7-3-2018:

今、私は次のエラーを受け取ります:

OSError: [WinError 126] The specified module could not be found

(.dllが存在する間...)

9
Yorian

私は窓のために働くために次を見つけました:

  • pythonを実行して、pythonが32ビットか64ビットかを確認します。
  • 対応する OSGeo4W (32または64ビット)をC:\OSGeo4WまたはC:\OSGeo4W64:にインストールします
    • 注:Express Web-GISインストールを選択し、次へをクリックします。
    • [パッケージの選択]リストで、GDALが選択されていることを確認します。 MapServerとApacheもデフォルトで有効になっており、安全にチェックを外すことができます。
  • 以下が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']
    
  • python manage.py checkを実行して、geodangoが正しく機能していることを確認します。

29
Udi

私の場合、(Windows10Pro + Python3.7.1)、(自動的に選択された)dllが存在するだけでは不十分でした。つまり、gdal111.dllです。

gdal204.dllにもC:\OSGeo4W\binがあり、lib_namesという名前のリスト変数を'gdal204'で24行目(Windows NT共有ライブラリに関して)に「強化」しようとしたことに気付きました。 %PYTHON_ROOT%\Lib\site-packages\Django\contrib\gis\gdal\libgdal.pyの.

#[...]
Elif os.name == 'nt':
    # Windows NT shared libraries
    lib_names = ['gdal204', 'gdal202', 'gdal201', 'gdal20', 'gdal111', 'gdal110', 'gdal19']
#[...]            ^^^^^^^

今のところ否定的な結果はありません。

5
keepAlive