在Windows上安装pyspacealite

2024-10-01 13:39:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我在ubuntu上使用pyspacealite,这很完美。但是窗户让我头疼。我已经试着解决这个问题至少三天了。在

我使用visualstudio2010express和mingw(gcc)作为编译器。我遇到并解决了很多问题:vcvarsall.bat公司,iconv.h等等,但实际上我不知道我到底做了什么。我尝试了几个环境变量来处理dll、.h文件(头)、.a文件(虽然它与mingw有关)、osgeo4w二进制文件等等,但我还是搞不清楚。在

我在使用MSVC时收到以下错误:'gcc' failed with exit status 1和使用MinGW时:命令提示符处有很多与lex.gml.c, lex.kml.c, lex.geojson.c或类似的警告行。在

我不是开发者。我只是对开源GIS世界感兴趣。有人知道“如何在windows上安装pyspacealite”的分步指南吗?在


Tags: 文件编译器ubuntu环境变量公司gccdll窗户
2条回答

经过大量的尝试和错误,谷歌搜索,坏键盘,各种论坛/聊天问答 治疗,头部受伤-更不用说我必须为 几个问题-我终于成功地构建和安装了一个64位版本的pyspacealite 3.0.1适用于Windows x64。呜呼!在

考虑到我很难到达终点(几个星期!),我想分享这个 作为对“如何构建和安装64位版本的 Windows上的PySpatalite?”我想,与其创建一个新的自我回答的问题线索,不如 最好回答这个关于在Windows上安装pyspacealite的问题,假设 也会出现在任何人搜索如何在64位的版本。所以这是。。。在

注意:按照这个网站的降价方式,我无法完全控制列表的编号模式;在每个标题之后,它会重置为1。所以,在最初的教程中,我可能把一些东西编号为30,这里我不得不注意到它显示为构建xyz下的第5步,等等。你能做什么?在


如何:在WINDOWS上安装64位pyspacealite

在40个华丽的容易遵循的步骤-不,真的!在


这里有很多步骤,但只是因为我把它们分解成最小的 可能的成分;所以不要感到不知所措。在高层,你实际上只做了5件事:

  1. 下载所有必要的资源
  2. 正在设置生成环境(您可能已经这样做了)
  3. 构建和安装依赖库
  4. 构建和安装pyspacealite
  5. 正在测试安装

就这样。不是很难,真的,是吗?哦,是的!!但希望对 你要遵循这些步骤。对你们中的许多人来说,在这些步骤中增加的细节会显得有些过火, 尤其是如果你以前是从源代码构建的(我没有——真的!),但我不做任何假设 关于观众的技能水平或专业知识;所以这是怎么写的,以便 初学者(像我一样!)应该能跟着它走。在

注意:请注意本文档中的注释,因为它们通常会指出一些 陷阱或一些乍一看就不明显的东西。在

注意:尽可能使用最新的稳定版本,而不是beta或 夜间快照。有时候,你别无选择,只能抓住最前沿的测试版 释放(或者阿尔法,如果你认识别人)。例如,你需要两个最新的马厩 发布GEOS解决问题的夜间构建。在

注意:当您访问下面的一些链接时,您可能会注意到一些预编译的二进制文件 你要建立的其他库。我强烈建议你不要使用这些。你不可能 对他们所处的环境有一定的了解,而且更好/更安全/更确定的是 如果您在自己的环境中构建它们,则可以正常工作。获取文本的例外。在

我:代表“我的环境”作为比较基础

要求:

  • 微软Windows x64操作系统!我们在这里干什么?)
    我:MS Windows 7 Home x64

  • MS Visual Studio Express C++ (MSVC) 2008
    我:我下载并安装了虚拟ISO映像,而不是使用基于web的安装程序
    注意:选择“vcsetup.exe“(C++)”vcssetup.exe“(C#)-注意到额外的's'?你会的 你觉得他们会让事情变得更明显,是吗?完整版本的MSVC将作为 好吧,但和我一样,我认为免费对你很有价值。
    注意:可能与MSVC 2010一起工作,但我强烈建议坚持使用相同的版本锡安那个 编译Python是因为有时它可能有点棘手,这就是我建议的原因 用MSVC而不是mingw-w64或Cygwin建造。

  • MS Software Development Kit (SDK) 7.0 amd64 .NET Framework 3.5
    我:也在这里下载了ISO映像。
    注意:可能与SDK 7.1 amd64.NET Framework 4.0(MSVC 2010)一起使用,但请参见上面的注释

  • Python 2.7 x64
    ME:Python 2.7.3 x64(预编译Win x64安装)
    注意:可能适用于2.5+版本,包括3.x版

  • Latest GNU iconv source code
    我:libiconv 1.9.2

  • Latest Proj.4 source code
    我:libproj 4.8.0

  • Latest GEOS source code
    我:libgeos 3.3.5(svn_trunk)+2012-07-28夜间快照
    注意:同时从该页面下载一个夜间快照;我们需要复制一个丢失的快照 目录,但我们不想用它来构建库本身。

  • Latest GNU Gettext Runtime BINARY
    我:获取文本0.18.1.1-2
    注意:由于循环,我们在这里使用二进制文件而不是从源代码构建 依赖iconv;您可以解决它,但这更容易/更快/更简单/更少压力- 诱导的。

  • Latest PySpatialLite Package
    我:pyspacealite 3.0.1
    注意:在撰写本文时,3.0.1是可用的最新版本;具体的特性 让这个版本运行起来可能并不完全与其他版本相匹配,但是 编译依赖库所需的步骤仍然适用。

  • Notepad++或其他功能齐全的编辑器应用程序。
    注意:当然,MS记事本在紧要关头也能做到,但它会使整个过程变得非常复杂 更努力。我推荐一些更健壮的东西,而Notepad++恰好是我的最爱。

设置生成环境:

  1. 安装MSVC 2008,并运行Windows更新(有时2次或更多次来获取所有内容),然后 当没有更新时。。。

  2. 安装sdk7.0,然后再次运行Windows Update一次(再等一次,等等,ad nauseum),然后什么时候运行 没有更新保留。。。

  3. 打开Windows文件夹(或Windows资源管理器)并导航到“C:\Program Files(x86)\Microsoft” Visual Studio 9.0\VC'

  4. 编辑'vcvarsall.bat公司'

  5. 在所示的行号处找到如下所示的代码:

    Line 19: if not exist "%~dp0bin\amd64\vcvarsamd64.bat" goto missing  
    Line 20: call "%~dp0bin\amd64\vcvarsamd64.bat"  
    
  6. 这些线中的路径是明显的错误的。别问我为什么。我猜微软 那一天,你要去保护他们的集体屁股,但是如果你只是去掉“\amd64”并改变 文件名改为“vcvars64.bat”在每一行都应该是正常的。最终结果如下:

    ^{2}$

    注意:您可以通过打开一个命令窗口(START>;RUN>;type'cmd'>;OK)和 运行以下命令:

    c:\> vcvarsall x64  
    

    您应该得到一系列的输出,说明它正在“设置使用Microsoft的环境” Visual Studio 2008 x64工具。去吧,把窗户关上。

  7. 现在让我们测试一下您的sdk7.0环境。单击“开始”>;“所有程序”>;“Microsoft Windows SDK” 7.0>;命令Shell。如果一切正常,您应该有一个命令行窗口 黄色文本。表示64位环境。很 完美!您现在可以关闭此窗口。
    注意:您可能需要创建一个指向sdk7.0cmdshell的快捷方式-我们将使用它 在整个过程中经常发生。

  8. 决定最终要在何处安装依赖项库。继续创建 如果文件夹不存在,请立即。记住你选择的道路,因为我们会提到它 经常。为了简单起见,我们在示例代码中将其称为'\Install'或有时称为'C:\Install'。

  9. 决定在此安装过程中将临时生成文件保存在何处。这应该是而不是 与“\Install”文件夹位于同一位置。在中,我们将其称为“\Temp”或“C:\Temp” 示例代码。

  10. 将GNU Gettext二进制文件提取到'\Temp',这将导致一个名为 '\Temp\Gettext-0.18.1.1-2'或类似文件。

  11. 复制libintl.dll从'\Temp\Gettext-0.18.1.1-2\bin'到'\Install\bin'(您必须 自己创建'\bin',或者只复制并粘贴所有Gettext('\bin',''\lib'等)sub- 文件夹放入“\Install”。任何一种方法都可以。

  12. 导航到“\Install\bin”,复制libintl.dll'然后叫它'国际长途电话簿'. 这是 对于某些以不同名称查找它的库来说是必需的。现在我们可以开始了 在库构建中。。。

构建依赖库:

  1. 将每个库(Proj.4、GEOS和iconv)提取到“\Temp”中各自的文件夹中。 我建议将每个文件夹重命名为简短但描述性的(例如“\Temp\Proj4”)为 键入'\Temp\Proj-4.8.0'(或更长!)一次又一次让人厌烦。在

建筑图标:

  1. 打开sdkcmdshell,将目录改为iconv文件夹 (例如“cd c:\temp\iconv”)。

  2. 键入以下两个命令之一:

    Single-threaded static lib: (recommended)  
    c:\Temp\iconv\> nmake install /f makefile.msvc MFLAGS=-ML PREFIX=c:\Install  
    
    Multi-threaded static lib: (so far it's working for me)  
    c:\Temp\iconv\> nmake install /f makefile.msvc MFLAGS=-MT PREFIX=c:\Install  
    

    将“c:\Install”替换为“\Install”路径。在做了很长一段时间的神秘的c风格之后 链接之类的,这个过程最终会完成,假设您没有看到错误 中断构建过程(例如'cl.exe文件已退出,状态为2')-忽略相对安全 无数的警告-你可以继续前进了。
    注意:如果您愿意,可以通过以下两个单独的步骤来构建和安装库 在“nmake”之后删除“install”,然后像上面一样重新运行命令,但是 重点是什么?如果构建部分失败,它无论如何也不会安装。

建筑项目4:

  1. 仍然在CMD Shell中,将目录更改为“\Temp\Proj4”文件夹 (例如“cd c:\temp\proj4”)。

  2. 键入以下命令:

    c:\Temp\proj4\> nmake install-all /f makefile.vc INSTDIR=c:\Install  
    

    将“c:\Install”替换为“\Install”路径。
    注意,。似乎不是 一般做法。
    注意:注意这里是“nmake install all…”,它比“nmake”更常见 install…,特别是因为“install”是一个内置的nmake命令,不应该 已覆盖。
    注意:这是我见过的唯一一个使用“INSTDIR=”而不是“PREFIX=”的实例。 它本身并不是错的,只是不是我见过的最常用的标准惯例。
    不要担心诸如“系统找不到指定的文件”之类的消息。0个文件 安装脚本非常基本,甚至尝试安装所有.DLL和其他文件 如果你不选择编译它们。
    在很短的时间之后,这个过程就会完成(同样,错误是错误的,警告是可以的),而您 可以继续。

建立地理信息:

  1. 这一次需要额外的时间和精力。记住你下载了 最新的稳定版本夜间快照?如果你还没有,继续提取 这两个文件夹都要分开(例如“\Temp\GEOS”和“\Temp\GEOSnap”)。

  2. 将文件夹“\Temp\GEOSnap\src\triangulate”复制到“\Temp\GEOS\src”。因为某种原因,比如 在最新的稳定版本中缺少写入的“\triangulate”。这就是我们所需要的 从“\GEOSnap”;继续。。。

  3. GEOS\makefile.vc patch下载到'\Temp\GEOS\生成文件.vc'. -说“谢谢”。

  4. GEOS\src\makefile.vc patch下载到'\Temp\GEOS\src\生成文件.vc'. -不客气。
    注意:不要把这两个弄混!如果你这样做,那对你来说会很糟糕。
    除了im这两个MSVC的makefile将代码添加到 执行基本的安装和卸载功能(例如“nmake install all…”)。否则,你 需要手动复制所有文件(到处都是一堆文件!)或 使用另一种构建方法,比如CMake,它目前有点闪避。

  5. 导航到“\Temp\GEOS\src”,编辑mk目录,并在行号处添加以下代码 表示:

    Line 45: triangulate \  
    

    此条目应低于“simplify”,高于“util”。保存并关闭。

  6. 打开CMDShell,将目录更改为“\Temp\GEOS”文件夹 (例如“cd c:\Temp\GEOS”)。

  7. 键入以下命令:

    c:\Temp\GEOS\> nmake install-all /f makefile.vc PREFIX=c:\Install  
    

    将“c:\Install”替换为“\Install”路径。经过很长很长时间的构建过程 将完成。假设没有生成中断错误,则应通知您已安装GEOS 在“\Install”中。
    这就是依赖库的全部内容;现在(终于)可以安装pyspacealite了!

构建和安装pyspacealite:

  1. 将pyspacealite解压到其自己的文件夹(例如“\Temp\PSL”)中的“\Temp”。

  2. 导航到'\Temp\PSL',编辑名为'设置.py,并在 显示的行号:

    Line 45: include_dirs = ['c:\Install\include']  
    Line 46: library_dirs = ['c:\Install\libs']  
    Line 47: libraries = ['geos','geos_c','proj','iconv']  
    Line 48: runtime_library_dirs = ['c:\Install\bin']  
    

    将上面的“c:\Install”部分替换为您自己的“\Install”路径,但保留 “\include”、“\libs”和“\bin”部分安装。保存并关闭文件。
    注意:您只需在第47行中添加“,'iconv'”。

  3. 打开cmdshell并将目录更改为pyspacealite文件夹 (例如“cd c:\Temp\PSL”)。

  4. 键入以下命令:

    c:\Temp\PSL\> python setup.py build  
    

    等待它下载spatialite合并,卸载它需要的文件,开始 构建过程,最终失败。
    是的。这是正确的。构建很可能会失败(除非Loki在您之前已经解决了这个问题) 读这个)。

  5. 如果发生故障,请查看故障上方约14行的控制台输出 信息,你应该看到隐藏在这邪恶的代码中的东西,比如:

    -DVERSION = "3.0.1"  
    

    把这个数字记下来;以后的几个地方你都需要它。

  6. 最小化CMD Shell,导航到“\Temp\PSL\mergalization”,然后编辑标记为的文件 别惊慌!它很大,很糟糕,很可怕,但我们只会做一个小的 改变:一个模糊但有效的解决办法。

  7. 在指定的行号处添加以下代码:

    Line 54: #define VERSION "3.0.1"  
    

    注意:将“3.0.1”替换为您在上面步骤30(此处为5)中看到的数字,并确保 使用双引号(“)NOT单引号('),否则它将失败。是的,我发现这很难 当然,不像你们这些知道得更好的大师。
    如果你想知道为什么我们要等它失败后再做这个改变,那是因为 在第一次合并下载之前,文件不存在于您的系统中 生成尝试。就这样。

  8. 现在重新运行上面步骤31中的命令,构建应该成功完成。

  9. 现在运行以下命令:

    c:\Temp\PSL\> python setup.py install  
    

    哇哦!假设没有更多麻烦的错误,您最终完成了构建/安装 过程。吃一块饼干,拍拍自己的后背。您可以删除所有那些'\Temp'文件夹 如果你愿意的话。现在进行一些测试以确保一切正常。。。

正在测试pyspacealite x64的安装:

  1. 打开一个CMD窗口并将目录更改为“..\Python27\Lib\site packages\pyspacealite\test” (例如“cd c:\python27…\test”)。

  2. 不要启动Python CLI。依次键入以下命令:

    c:\python27\...\test\> python dbapi.py  
    c:\python27\...\test\> python dump.py  
    c:\python27\...\test\> python factory.py  
    c:\python27\...\test\> python hooks.py  
    c:\python27\...\test\> python regression.py  
    c:\python27\...\test\> python spatial.py  
    c:\python27\...\test\> python transactions.py  
    c:\python27\...\test\> python types.py  
    c:\python27\...\test\> python userfunctions.py  
    

    每次考试后,你应该收到报告,它在x.xxx秒内运行了xx次测试, 以及测试是否通过(正常)或失败。如果他们都通过了,你就是金黄色。
    注意:'空间.py'可能会失败,因为它期望SpatiaLite版本 “2.3.1”,而你的可能是“3.0.1”。不用担心,只要对文件进行简单的编辑就可以解决问题 并允许您运行测试。

  3. 编辑'空间.py'并将“2.3.1”更改为实际安装的版本(记住 以上步骤30(构建PySpatiaLite-步骤5)中的编号?)在所示的行号处:

    ^{14}$

    运行'空间.py“再测试一次,现在应该可以正常工作了。不知道他们为什么要这么做 无论如何,请检查此测试中的pyspacealite版本。。。继续前进!在

    内置的测试很好,但是如何做一个更真实的面向世界的测试呢?你知道,一个在哪里 实际上,您在数据库中创建、填充、轮询和操作数据?是啊,听起来不错 就像票一样!

  4. 滚动到在线Spatialite的Language Bindings: Python部分的底部 烹饪书,复制“太空人”这个词_样品.py'代码到新的Python文件中(例如'psl'_样品.py').

  5. 在保存、关闭和运行此测试之前,请检查是否存在可能的复制/粘贴错误。加倍 确定代码在所示行号处的读数与此完全相同:

    Line 28: sql = "SELECT AddGeometryColumn('test_pt', "  
    Line 29: sql += "'geom', 4326, 'POINT', 'XY')"  
    

    我猜在从HTML代码到Python文件的转换过程中有些东西会丢失,因为 第28行的结束空格和引号一直被放到第29行的开头 剪切/粘贴此代码,以及来自多个源的代码。很容易搞定,tho。

  6. 现在保存、关闭并运行它。我真的要教你怎么做吗?拜托!作为一个提示, 请看第35步(这里是2)。;—)
    假设所有的测试都通过了,内置的和食谱样本,那么所有的指示 指出您有一个可靠的64位pyspacealite安装。

  7. 庆祝吧!(需要四舍五入到偶数40;-)

我希望这个“小”方法对你有用。请随时提供反馈/更新/更正。在

谨致问候

-RMWChaos,你友善的邻居邪恶的霸主

http://www.thedarklands.com

忘记尝试构建自己的可执行文件吧!在

只需使用OSGeo4W中现有的可执行文件

  1. 安装OSGeo4W
  2. 在这个应用程序下,你会发现一个Python27和一个 spatialite网站包
  3. 将网站包复制到您自己的 Python
  4. 将OsGeo4W/bin目录中的所有DLL复制到中的新文件夹中 你的Python副本说binosgeo4w
  5. 将新文件夹binosgeo4w添加到系统路径中

我不知道哪个网站需要DLL支持。 然后我可以从http://www.gaia-gis.it/spatialite-2.4.0-4/splite-python.html运行测试脚本

相关问题 更多 >