9

GeoDjango 用の Spatialite をインストールしようとして、髪をかきむしっています。

私はすでに Homebrew を使用しています。これは一般的に簡単で便利なので、最初はGeoDjangoのHomebrew の指示に従おうとしました。

しかし、これは、Spatialite などのデータベースをインストールするまでには至りません。次のステップは、Spatialite 自体を試してインストールすることですが、Django ドキュメントで提供される Homebrew 固有の手順はありません。

完璧に見えるこのチュートリアルを見つけました.GeoDjango用のSpatialiteのHomebrewおよびvirtualenvフレンドリーなインストールです。

しかし、うまくいきません... pysqliteHomebrewからインストールした空間化されたものではなく、OS Xに付属する非空間対応バージョンのSQLiteにリンクされているようです.Djangoが試したときにこのエラーが発生しましたデータベースに接続するには:

「pysqlite ライブラリは C 拡張機能の読み込みをサポートしていません。SpatiaLite を使用するには、拡張機能の読み込みを許可するように SQLite と pysqlite の両方を構成する必要があります。」

pysqlite の作成者は、Github での助けを求める私の嘆願に応答しておらず、Google からも何も見つかりませんでした。

そこで私は製図板に戻り、GeoDjango ドキュメントの「Mac OS X 固有の手順」に従うことにしました... KyngChaos バイナリ パッケージからさまざまな geo ライブラリをインストールすることによって。

UnixImageIOドキュメントには「パッケージを上記の順序でインストールする」と書かれていますが、最初にインストールしないとインストールできないことがわかりましたPROJ。Spatialite バイナリをダウンロードするためのドキュメントのリンク ( http://www.gaia-gis.it/spatialite-2.3.1/binaries.html ) が壊れているため、代わりに KyngChaos の「Spatialite Tools v4.1」を使用しました。

次のステップに進むと、次のエラーが表示されます。

$ spatialite geodjango.db "SELECT InitSpatialMetaData();"  
SQLite header and source version mismatch  
2013-10-17 12:57:35 c78be6d786c19073b3a6730dfe3fb1be54f5657a  
2013-09-03 17:11:13 7dd4968f235d6e1ca9547cda9cf3bd570e1609ef

この時点で何が問題なのかよくわかりません。

ここSOには、 KyngChaosルートをたどり、Homebrewルートから得た同じ「拡張機能のロードを許可するには、SQLiteとpysqliteの両方を構成する必要があります」というエラーが発生する人がいます。

Django へのサポートを追加するためのこのチケット #17756を見つけました - これはすべてを簡単に実行できるはずですが、残念ながらどちらも機能しません (チケットの下部にあるコメントを参照してください)。pyspatialitepyspatialitepip install

ソースからすべてを手動でビルドしようとするのは少し気が進まないので、同じ問題に再び遭遇する可能性が高いと思われますが、途中で不可解なコンパイラエラー、魔法のフラグ、パスなどに関する情報をグーグルで検索するのに何時間も費やしています.

私はあきらめて、Postgres/PostGIS を使用する準備ができています。

4

3 に答える 3

4

ここのヒントを使用して、これを機能させることができました:
https://github.com/ghaering/pysqlite/issues/60#issuecomment-50345210

それを修正した実際のパスを使用していたのか、それとも Homebrew の樽または基礎となるパッケージだけが更新され、クリーンにインストールされたのかはわかりません。それでも、今は機能しています。

私が行った手順を以下に再現します。

brew update
brew install sqlite  # 3.8.5
brew install libspatialite  # 4.2.0
brew install spatialite-tools  # 4.1.1

git clone https://github.com/ghaering/pysqlite.git
cd pysqlite

(brewが既存のバージョンを持っていると報告した場合、それらのリンクを解除し、上記のコメントに従って最新のものをインストールしました)

次に編集setup.cfgしてコメントアウトし#define=SQLITE_OMIT_LOAD_EXTENSION、パスを指定します。

include_dirs=/usr/local/opt/sqlite/include
library_dirs=/usr/local/opt/sqlite/lib

インストールしたい場所でvirtualenvをアクティブにしてから、

python setup.py build
python setup.py install

build_staticまだ失敗しますclang: error: no such file or directory: 'sqlite3.c'

(おそらくpip install .、githubの問題で提案されているようにすべきだったでしょう)

spatialite geodjango.db "SELECT InitSpatialMetaData();"無視できるエラーがありますが、今は成功しています:

InitSpatiaMetaData() error:"table spatial_ref_sys already exists"

つまり、おそらくそのコマンドを実行する必要さえありません

于 2014-09-08T09:37:15.003 に答える
3

私がこれをインストールしていたとき、私はこの指示に従います https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/spatialite/#pysqlite2

pysqlite2

sqlite3 Python stdlib モジュールの代わりに新しいバージョンの pysqlite2 を使用することにした場合は、外部拡張機能をロードできることを確認する必要があります (つまり、SpatiaLite をロードできるように、必要な enable_load_extension メソッドが利用可能です)。

これには、自分で構築することが含まれる場合があります。このために、pysqlite2 2.6 をダウンロードし、展開します。

$ wget https://pypi.python.org/packages/source/p/pysqlite/pysqlite-2.6.3.tar.gz
$ tar xzf pysqlite-2.6.3.tar.gz
$ cd pysqlite-2.6.3

次に、テキスト エディタ (emacs や vi など) を使用して、setup.cfg ファイルを次のように編集します。

[build_ext]
#define=
include_dirs=/usr/local/include
library_dirs=/usr/local/lib
libraries=sqlite3
#define=SQLITE_OMIT_LOAD_EXTENSION
于 2013-12-21T00:35:55.237 に答える