mac os x 下搭建python的mapnik小众模块(各种疑难杂症都经历了一遍啊!!!!)

终于成功啦!!!!!!!撒花!!!!!!!!

总结版如下:

1.mapnik必须要装2.2版本,不能用3.

2.添加路径

3.关闭自己安装的python,启用苹果自带的python。

——————————————————————————————————————————————————————

最开始知道mapnik这个模块之后,就很想用。去mapnik官网(http://mapnik.org/)搜发现已经更新到3.0.20了啊!

立刻兴冲冲按照官网解说下载安装(http://mapnik.org/pages/downloads.html)。

然后打开python……import mapnik!嗯?不行?没有这个模块?


然后就开始昏天黑地找了一天的解决方法……_(:з」∠)_


直接进正题吧:

1.GitHub上面mapnik的开发人员解释(https://github.com/mapnik/mapnik/wiki/MacInstallation_Homebrew),通过homebrew安装的mapnik一定会是最新的版本——Homebrew 中的当前包基于Mapnik 3,默认情况下不包含Python绑定。也就是说你下载的最新的mapnik3,其实是不支持python的模块驱动的!

因此,为了能在python上使用mapnik,需要绑定安装旧版Mapnik 2.2软件包。


2.我又回到了官网的下载模块(http://mapnik.org/pages/downloads.html),注意这里有mac os x的安装方法说明,但是官方说

brew install homebrew / versions / mapnik2

就可以安装mapnik2,但是我没成功?(没有深究没有成功的原因)

好在官网下载模块这里直接给你提供了mapnik2的OS X 64位软件包安装包!!我们手动安装!

下载下来一看!这不是我熟悉的pkg文件吗!一步一步来!完美!


3.安装好了之后又试import mapnik,依旧不行?

mapnik2里面有一个readme的说明,打开看如下:

To enable the python bindings you need to manually put them on your PYTHONPATH like:


    py_version=$(python -c "import sys;print('%s.%s' % (sys.version_info[0],sys.version_info[1]))")

    export PYTHONPATH=/usr/local/lib/python${py_version}/site-packages/:$PYTHONPATH

意思就是要添加路径另外里面还说了:

mapnik and cairo python bindings in:
   
    /usr/local/lib/python2.6/site-packages/
    /usr/local/lib/python2.7/site-packages/
    /usr/local/lib/python3.3/site-packages/

我看只有2.6,2.7和3.3,所以我直接选择了2.7这个版本,路径也只添加了2.7这个


4.这下总行了吧?结果运行还是不行?但报错不再是没有mapnik这个模块。而是说:

>>> import mapnik
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6

这里需要说明的是,我的python2.7是安装的anaconda,然后运行的Spyder。

找解决办法。在网上有人跟我一样的情况了!

https://stackoverflow.com/questions/15678153/homebrew-python-on-mac-os-x-10-8-fatal-python-error-pythreadstate-get-no-cu

最赞的解决方法说了一下是:mapnik的python对接口最终链接到由苹果提供的系统python上。


5.这里网上有很多方法解决了如何切换mac的python版本(自己装的,苹果自带的,brew安装的,3.x版的,2.x版的):https://www.zhihu.com/question/30941329

但是我没用这些方法,因为我急着试验能不能用mapnik,直接粗暴的把anaconda的路径删掉,这样不就能用mac自带的python了嘛!

6.当终端显示:

Python 2.7.10 (default, Jul 15 2017, 17:16:57) 

[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> 


说明调用了mac自带的mapnik了。


然后输入:

Python 2.7.10 (default, Jul 15 2017, 17:16:57) 

[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import mapnik

>>> 


完美!没有报任何错!

已经试验了代码,的确可以调用mapnik了!大功告成!



你可能感兴趣的:(原创)