【问题标题】:Mapnik import problems OSX 10.6Mapnik 导入问题 OSX 10.6
【发布时间】:2014-12-05 04:03:30
【问题描述】:

我对此很陌生(甚至在昨天之前还没有使用过终端),但我正在尝试按照 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、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
  >>> 

更新:希望它会有所帮助(因为我一直计划这样做),我将我的操作系统升级到小牛,按照此处的说明从 python.org 卸载了我的所有 Python 版本:How to uninstall Python 2.7 on a Mac OS X 10.6.4? ,然后安装当前版本的 Xcode(如果没有在 Apple 为 OSX 10.6.8 支付 99 美元的开发人员帐户,它就无法使用),再次运行 William 下面列出的命令来安装 homebrew、Python 和 mapnik,并尝试“导入” mapnik' 再次在 Python 中。仍然没有工作,但我现在有不同的错误消息。

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 doctor,这次警告少得多,似乎没有什么令人惊讶的。我确实接受了 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 文件中重新执行“启用 python 绑定”操作(我首先重置到我的主目录,不确定这是否重要)。这个:

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 代码就可以了!非常感谢评论的人。我没有足够的“声誉”来投票威廉的帖子,所以如果有人能做到这一点,将不胜感激!

【问题讨论】:

  • 从外观上看,您没有正确安装mapnik。您是如何安装 mapnik 的?
  • 也许你用系统 Python (/usr/bin/python) 安装了mapnik
  • @Burhan Khalid,我刚刚下载了 mapnik 并单击了安装包并浏览了所有提示。我还按照 README.txt 文件中的说明在终端中执行了以下操作以启用 Python 绑定: $ 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

标签: python macos mapnik


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    当您仅键入 python 时获得 Python 2.6 的原因是,在 $PATH 环境变量中,存放该版本 python 的可执行文件的目录列在存放 Python 2.7 可执行文件的目录之前。这也意味着当您安装 mapnik 时,它很可能在 Python 2.6 的 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,一切都应该正确、自动地设置,理论上不应该有版本冲突。

    【讨论】:

    • 哇。快速响应!谢谢。威廉,我按照您的指示安装了自制软件、Python 和 mapnik(我假设修复了 $PATH 环境变量?还是我必须事先手动执行此操作?),但是当我尝试导入时,我仍然得到完全相同的 ImportError马普尼克。当我安装 mapnik 时,自制软件发出警告:未安装 Xcode。这可能是问题的一部分吗?我查找了 Xcode,似乎可以使用 Apple 开发者帐户下载 OSX 10.6 的旧版本。或者也许有一些方法可以卸载 python 和 mapnik 并使用自制软件重新开始?
    • 我应该提一下,我在初始安装期间按照安装说明执行了此操作:$ export PYTHONPATH=/usr/local/lib/python${py_version}/site-packages/: $PYTHONPATH
    • 它不一定会修复 $PATH 变量。您不一定需要 Xcode for mapnik,但是您应该尝试并修复运行 brew doctor 时收到的所有消息。您是否重新加载了 bash 配置?
    • 哈,我正在尽可能快地阅读您推荐的书,但尚未了解如何重新加载我的 bash 配置。我确实基于此处的另一个线程尝试了此操作,但没有成功: $ source ~/.bash_profile -bash: export: /Users/myhome/.bash_profile': not a valid identifier -bash: export: /Users/myhome/.bash_profile': not a valid identifier
    • 要重新加载您的 bash 配置,只需关闭终端并重新打开它。
    猜你喜欢
    • 2015-03-11
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    相关资源
    最近更新 更多