4

私は最初の GeoDjango プロジェクトを構築していますが、ちょっと必死です。

Windows でワンクリック インストーラーを使用して PostgreSQL 9 と PostGis 1.5 をインストールしました。だからすべてがそこにあります。settings.py で GEOS_LIBRARY_PATH に libgeos_c-1.dll のフルパスを設定しました。しかし、manage.py syncdb を実行すると、次のエラーが発生します。

  File "C:\Python25\lib\site-packages\django\contrib\gis\geometry\backend\geos.py", line 1, in <module>
    from django.contrib.gis.geos import \
  File "C:\Python25\Lib\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 "C:\Python25\Lib\site-packages\django\contrib\gis\geos\geometry.py", line 14, in <module>
    from django.contrib.gis.geos.coordseq import GEOSCoordSeq
  File "C:\Python25\Lib\site-packages\django\contrib\gis\geos\coordseq.py", line 9, in <module>
    from django.contrib.gis.geos.libgeos import CS_PTR
  File "C:\Python25\lib\site-packages\django\contrib\gis\geos\libgeos.py", line 51, in <module>
    lgeos = CDLL(lib_path)
  File "C:\Python25\lib\ctypes\__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] The specified module could not be found

そこで、libgeos.py を開き、指定された行を確認します。単純な「CDLL(lib_path)」です。どうやら lib_path は GEOS_LIBRARY_PATH です。

そこで、簡単なテストを作成します。

from ctypes import CDLL

lgeos = CDLL('libgeo's path')

まだ同じ問題があります。そのため、CDLL を使用してこの dll を python でロードすることはできません。この段階では、どうすればよいかわかりません。助けてください。

4

5 に答える 5

3

明らかに、ダブル '\' スラッシュを使用して GEOS_LIBRARY_PATH 変数を設定した後、私にとっては機能しますが、このエラー 'module' object has no attribute 'OSMGeoAdmin' を起動します

于 2011-01-11T06:54:36.697 に答える
2

Windowsインストーラーを介してPostgresql 9.1およびpostgis 2.0をインストールした後、同じ問題に遭遇しました。他のものをダウンロードする必要はありません。このディレクトリを Windows パスに追加するだけです:C:\PostgreSQL\9.1\binまたはlibgeos_c-1.dllファイルが存在する場所。IDE で新しい環境変数を有効にする場合は、再起動が必要になる場合があります。コマンド ラインの場合は、新しいコマンド プロンプトを開くだけです。

このようにするとGEOS_LIBRARY_PATH、必要なファイルが既に Windows パスにあるため、設定がオプションになります。

これは、2010 年の OP では機能しなかった可能性がありますが、2012 年以降に同じ問題に遭遇した他のユーザーにとっては、おそらく最も簡単な解決策です。

于 2012-07-18T07:24:35.797 に答える
1

さまざまなことが頭に浮かびますが、最も明白なのは、DLLファイルが存在するフォルダーだけでなく、そこにDLLファイルへのパスを貼り付けましたか? 安全を期すためだけに、攻撃するつもりはありません。

次に、未解決の依存関係がある場合にも、このエラーが発生する可能性があります。つまり、DLL の LoadLibrary は、依存する別のライブラリがないために失敗します。Dependency Walkerを使用して簡単に見つけることができます。依存関係のある libgeos をロードし、欠落しているモジュール、エラー メッセージなどを探します。たとえば、libgeos-XYZ.dll が欠落している可能性があります。

于 2010-10-04T22:10:52.430 に答える
0

ここで同じ問題。よろしければ、正しい DLL を共有していただけないでしょうか。それが本当に問題を解決する場合。または、OSGeo4W をインストールすることが唯一の方法ですか?そうであれば、どのようなインストール手順に従いましたか?

于 2010-10-27T00:22:12.310 に答える