Я только недавно прошел через кошмарную сборку x64 pyspatialite 3.0.1 и всех его зависимых библиотек. Это может быть сделано, но требуется некоторая «подстройка», чтобы сделать это правильно.
Во-первых, обратите внимание на обходной путь, который может понадобиться для компиляции слияния spaceite.c здесь:
Pyspatialite 3.0.1, выпуск № 7, комментарий № 3
Во-вторых, я предлагаю вам скомпилировать с MSVC 2008 / SDK 7.0 x64, с чем скомпилирован Python 2.7 x64. Я столкнулся с большими трудностями, пытаясь заставить вещи правильно скомпилироваться, когда компилировал библиотеки зависимостей с помощью mingw-w64.
iconv (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
Если вы загрузите два make-файла из 577, они будут содержать исправление в 574.
Вы также захотите загрузить один из ночных снимков и скопировать каталог geos / src / triangulate в папку сборки перед компиляцией, так как он отсутствует в svn_trunk.
Наконец, вы захотите внести небольшие изменения в geos / src / dirlist.mk:
В строке 45 добавьте 'triangulate \' (без кавычек) чуть ниже 'упрощение \' и над 'util'.
Теперь, когда вы компилируете, вы можете увидеть некоторые предупреждения, но сборка не должна провалиться сразу ...
nmake /f makefile.vc PREFIX=../Path/To/Geos/Install/Here
nmake install /f makefile.vc PREFIX=../Path/To/Geos/Install/Here
Это заботится о ваших зависимостях lib. Теперь вам нужно сделать одну из двух вещей:
1. Либо создайте файл setup.cfg в папке сборки pyspatialite и добавьте пути / bin, / lib и / include, либо
2. Отредактируйте файл setup.py pyspatialite и сделайте то же самое.
Мне было проще всего напрямую отредактировать файл 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 и Python
Однако шаги, которые делает автор, не охватывают детали, позволяющие библиотекам зависимостей работать в 64-битной среде, и я не нашел их особенно полезными, поскольку pyspatialite 3.0.1 теперь автоматически определяет соответствующую версию Пространственное объединение для загрузки. Пример кода на сайте создает файл базы данных пространственных данных и заполняет его тысячами записей. Все прошло успешно для меня; поэтому я полагаю, что описанный выше способ получения сборки x64 для pyspatialite работает.
Удачи!
-RMWChaos