首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mapnik导入问题OSX 10.6

Mapnik导入问题OSX 10.6
EN

Stack Overflow用户
提问于 2013-12-01 11:30:33
回答 2查看 1.7K关注 0票数 0

我在这方面非常新(昨天之前还没有使用过终端),但我正在按照比约恩·桑德维克( Bjorn Sandvik)在http://blog.thematicmapping.org/2012/07/terrain-mapping-with-mapnik.html上的指示做一些地形映射。我已经按照各自站点上的说明安装了python和mapnik,但当我试图通过终端中的python导入mapnik时,我会得到一个ImportError。有谁能告诉我如何解决这个问题吗?在我看来,它调用的是不同版本的python (如果我只是在终端中输入python而不是/usr/local/bin/python,它会返回2.6),但我不知道该怎么做,也不知道安装过程中哪里出错了。我在MacOSX10.6,64位。

代码语言:javascript
复制
$ mapnik-config -v
2.2.0
$ /usr/local/bin/python
Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> import mapnik
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/site-packages/mapnik/__init__.py", line 69, in <module> from _mapnik import *
ImportError: dlopen(/usr/local/lib/python2.6/site-packages/mapnik/_mapnik.so, 2): Symbol not found: __tlv_bootstrap
Referenced from: /usr/local/lib/libmapnik.dylib
Expected in: /usr/lib/libSystem.B.dylib
  in /usr/local/lib/libmapnik.dylib
  >>> 

更新:为了有帮助(因为我一直计划这么做),我把我的操作系统升级到了Maverick,按照以下说明从python.org卸载了所有的How to uninstall Python 2.7 on a Mac OS X 10.6.4?版本:How to uninstall Python 2.7 on a Mac OS X 10.6.4?,然后安装了当前版本的Xcode (如果没有AppleOSX10.6.8的99美元付费开发帐户,它就无法使用),再次运行William列出的命令来安装自制、Python和mapnik,并试图再次在Python中“导入mapnik”。仍然没有工作,但我现在有一个不同的错误信息。

代码语言:javascript
复制
python
Python 2.7.5 (default, Aug 25 2013, 00:04:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import mapnik
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named mapnik
>>>

我请了个医生,这一次的警告要少得多,似乎没有什么令人惊讶的。我接受了brew医生的建议,并尝试使用他们推荐的代码重新设置我的路径:

代码语言:javascript
复制
echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile

这也没什么用。我的工作目录现在是Macintosh:bin home_directory$。

我还注意到Python安装结束时出现了一个错误:

代码语言:javascript
复制
Error: Permission denied - /usr/local/lib/python2.7/site-packages/sitecustomize.py

此消息在mapnik安装结束时重新出现。也许这两个都没有正确安装?当我做mapnik-config -v时,它是2.2.0。当我做python版本时,它写的是2.7.5。当我查看/usr/local/bin时,我可以看到以下文件: mapnik-config、mapnik-速度检查。当我查看/usr/bin时,没有看到任何mapnik文件。

更新2:起作用了!我只需在mapnik README.txt文件中重新执行“”(我首先将其重置到主目录,不确定这是否重要)。这是:

代码语言:javascript
复制
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代码&我会没事的!非常感谢那些发表评论的人。我没有足够的“声誉”来投票支持威廉的职位,所以如果有人能这样做的话,我将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-01 13:15:41

您是正确的,您有Python版本冲突。由于您在OSX上,而且您以前没有真正使用过terminal,所以它不会是一个“简单的修复”。我建议您阅读这本书http://linuxcommand.org/tlcl.php,以了解如何正确使用命令行。注意:即使它适用于Linux,也适用于BASH,这是OSX中默认使用的。

当您只键入python时获得Python2.6的原因是,在$PATH环境变量中保存Python2.7可执行文件的目录之前列出了保存该版本Python可执行文件的目录。这也意味着,当您安装mapnik时,很可能会在Python2.6的site-packages中安装该模块,并将其绑定到该版本。

首先要检查的是您是否可以在Python2.6中导入mapnik。所以从终端运行python (而不是/usr/local/bin/python)。如果这有效的话,那就证实了我上面提到的。

最快的解决方案是修复$PATH环境变量,指向正确版本的python,然后重新安装mapnik。

我建议您使用Homebrew安装Python,这是最简单的解决方案。自制是OSX的包管理器。

要安装Homebrew,在终端类型中:

代码语言:javascript
复制
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"

然后安装Python:

代码语言:javascript
复制
brew install python

然后安装mapnik;

代码语言:javascript
复制
brew install mapnik

如果您使用Homebrew,一切都应该正确地设置,自动和理论上,不应该有版本冲突。

票数 0
EN

Stack Overflow用户

发布于 2014-12-04 20:03:30

即使在brew安装之后,您也必须像这样手动导出绑定

代码语言:javascript
复制
export PYTHONPATH="/usr/local/lib/python2.7/site-packages"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20311652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档