我在这方面非常新(昨天之前还没有使用过终端),但我正在按照比约恩·桑德维克( 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位。
$ 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”。仍然没有工作,但我现在有一个不同的错误信息。
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医生的建议,并尝试使用他们推荐的代码重新设置我的路径:
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版本时,它写的是2.7.5。当我查看/usr/local/bin时,我可以看到以下文件: mapnik-config、mapnik-速度检查。当我查看/usr/bin时,没有看到任何mapnik文件。
更新2:起作用了!我只需在mapnik README.txt文件中重新执行“”(我首先将其重置到主目录,不确定这是否重要)。这是:
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代码&我会没事的!非常感谢那些发表评论的人。我没有足够的“声誉”来投票支持威廉的职位,所以如果有人能这样做的话,我将不胜感激!
发布于 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,在终端类型中:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"然后安装Python:
brew install python然后安装mapnik;
brew install mapnik如果您使用Homebrew,一切都应该正确地设置,自动和理论上,不应该有版本冲突。
发布于 2014-12-04 20:03:30
即使在brew安装之后,您也必须像这样手动导出绑定
export PYTHONPATH="/usr/local/lib/python2.7/site-packages"https://stackoverflow.com/questions/20311652
复制相似问题