我剛剛經歷了x64 build pyspatialite 3.0.1及其所有依賴庫的噩夢。它可以完成,但需要一些「調整」才能做到。
首先,請注意可能需要編譯空間位置的解決方法。Ç合併在這裏:
Pyspatialite 3.0.1 Issue #7 Comment #3
其次,我建議你用2008 MSVC/SDK 7.0 x64的,這是Python 2.7版的x64與編譯編譯。當我使用mingw-w64編譯依賴庫時,我遇到了很多麻煩,試圖讓事情編譯正確。 (v。1.9.2)和proj4(v。4.8.0)都似乎編譯和安裝都很好;但是,使用最新的GEOS svn_trunk(v.3.3.5)可能會遇到一些麻煩。注意解決方法/修復了以下鏈接...
OSGEO GEOS TRAC Ticket #574
OSGEO GEOS TRAC Ticket #577
如果從577下載這兩個makefile文件,它們包括在574
的修復也將要下載其中一個夜間快照,並在編譯之前將geos/src/triangulate目錄複製到build文件夾中,因爲它在svn_trunk中缺失。
最後,你要稍作修改GEOS/src目錄/ dirlist.mk:
在第45行,添加「三角\」(不含引號)略低於「簡化\」以上' UTIL」。
現在,當您編譯,你可能會看到一些警告,但構建不應該完全失敗......
nmake /f makefile.vc PREFIX=../Path/To/Geos/Install/Here
nmake install /f makefile.vc PREFIX=../Path/To/Geos/Install/Here
這需要你的庫依賴護理。現在,你需要做兩件事情之一: 1.Either在pyspatialite build文件夾中創建一個setup.cfg文件,並添加/箱,/ lib和/ include路徑,或 2.直接編輯pyspatialite setup.py文件,並執行相同的操作。
我發現最容易直接編輯setup.py文件,以及路徑添加到依賴庫看起來類似於:
(line 45) include_dirs = ['../usr/local/include', '../python27/include']
(line 46) library_dirs = ['../usr/local/lib', '../python27/libs', '../usr/local/bin', '../python27/DLLs']
(line 47) libraries = ['geos','geos_c','proj','iconv'] # You may need to add 'iconv' here
(line 48) runtime_library_dirs = ['../usr/local/lib', '../python27/libs', '../usr/local/bin', '../python27/DLLs']
如果使這些更改後pyspatialite仍無法爲您構建,再作一次修改集合到的setup.py:圍繞線121,加上下面幾行...
ext.include_dirs.append('../python27/include')
ext.include_dirs.append('../usr/local/include')
ext.library_dirs.append('../python27/libs')
ext.library_dirs.append('../usr/local/lib')
ext.library_dirs.append('../python27/DLLs')
ext.library_dirs.append('../usr/local/bin')
記得替換的路徑,以匹配特定的設置。這應該做到這一點。運行'python setup.py install'後,一切都應該工作。
可以運行在../Python27/Lib/site-packages/pyspatialite/test所有測試 - 它們都通過了我。然而,一個更美好,更真實的測試可能是從這個鏈接運行示例代碼:
SpatiaLite and Python
筆者進入不包括細節得到的依賴庫在64位的工作步驟環境,但是,我沒有發現他們特別有用,因爲pyspatialite 3.0.1現在自動檢測spatialite合併下載相應版本。網站上的示例代碼創建了一個空間數據庫文件並使用數千個條目填充它。一切順利爲我運行;所以我相信上面概述的方法來獲得pyspatialite x64構建工作。
祝你好運!
-RMWChaos
可能重複的[SQLite + SpatiaLite問題](http://stackoverflow.com/questions/1556436/sqlite-spatialite-problems) – 2011-12-21 13:36:30
剛剛檢查線程,塞德里克 - 我錯過了我的搜索。這個問題是類似的,雖然我使用的是Python而不是C#,而且我也使用了自此之後新的64位測試版本。我絕對擁有該線程中列出的所有DLL,因此解決方案並不能解決我的問題。 – MappaGnosis 2011-12-21 14:27:37