我正在尝试在Windows 7上同时使用Python 2和3来使用spatialite。与其尝试为Python 3打补丁,我决定采用load_extension方法,并使用sqlite3 Python内置包,类似于这里的做法:Sqlite load_extension fail for spatialite in Python 和这里:Use spatialite extension for SQLite on Windows。
但是,在官方(C)Python 2.7安装程序中,由于与MacOS相关的问题,load_extension被禁用了。这在Python 3.4的对应版本中没有发生。此外,两个安装程序都没有启用SQLITE_ENABLE_RTREE=1(我也想要这个)。
起初,对于Python 2.7版本,一种解决方法是通过调整设置文件来构建
是否存在其他更简单的替代方案?是否有人通过修改
但是,在官方(C)Python 2.7安装程序中,由于与MacOS相关的问题,load_extension被禁用了。这在Python 3.4的对应版本中没有发生。此外,两个安装程序都没有启用SQLITE_ENABLE_RTREE=1(我也想要这个)。
起初,对于Python 2.7版本,一种解决方法是通过调整设置文件来构建
pysqlite
以同时拥有R*Tree和扩展功能。然而,这种方式并不适用于Python 3,因为当前的setup.py
似乎不支持此操作。据我所知,这是因为该软件包已经移动到了核心Python存储库中:https://github.com/ghaering/pysqlite/issues/72#issuecomment-94319589
我的当前解决方案是重新构建Python 2.7和3.4,并设置所需的sqlite3
软件包。这种方法奏效了,我能够将spatialite
作为扩展程序加载并创建R*Tree。是否存在其他更简单的替代方案?是否有人通过修改
pyspatialite
或pysqlite
的setup.py
找到了替代方案?