Mapnik导入问题OSX 10.6

时间:2013-12-01 11:30:33

标签: python macos mapnik

我对此非常陌生(昨天之前甚至没有使用过终端),但我正在尝试按照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),但是我不知道该怎么做或者去哪里安装过程中出错。我在Mac OSX 10.6,64bit上。

$ 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
  >>> 

更新:希望它会有所帮助(因为我一直计划这样做),我将操作系统升级为Mavericks,按照此处的说明从python.org卸载了我的所有Python版本:{{3然后安装了当前版本的Xcode(如果没有售价99美元的付费开发者帐户,那么在OSX 10.6.8下就无法使用),再次运行William下面列出的命令来安装自制软件,Python和mapnik,并试图再次在Python中“导入mapnik”。仍然没有工作,但我现在有一个不同的错误信息。

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医生的建议,并尝试使用他们推荐的代码重置我的PATH:

echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile

这也没有帮助。我的工作目录现在是Macintosh:bin home_directory $。

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

Error: Permission denied - /usr/local/lib/python2.7/site-packages/sitecustomize.py

此消息在mapnik安装结束时重新出现。也许这些都没有正确安装?当我做mapnik-config -v时它说2.2.0。当我做python --version时,它说2.7.5。当我查看/ usr / local / bin时,我可以看到这些文件:mapnik-config,mapnik-speed-check。当我查看/ usr / bin时,我没有看到任何mapnik文件。

更新2:它工作了!我只需要在mapnik README.txt文件中重新执行'enable python bindings'(我先重置到我的主目录,不确定是否重要)。这样:

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代码&amp;我应该没事!非常感谢那些评论的人。我没有足够的“声誉”来投票威廉的帖子,所以如果有人能做到这一点,我将非常感激!

2 个答案:

答案 0 :(得分:1)

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

export PYTHONPATH="/usr/local/lib/python2.7/site-packages"

答案 1 :(得分:0)

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

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

首先要检查的是你是否可以在Python 2.6中导入mapnik。所以从终端运行python(不是/usr/local/bin/python)。如果有效,那将证实我上面提到的内容。

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

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

要在终端类型中安装Homebrew:

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"

然后安装Python:

brew install python

然后安装mapnik;

brew install mapnik

如果你使用Homebrew,一切都应该自动设置,理论上应该没有版本冲突。