使用Tilestache时全局名称'नेसऀ'未定义
我在Redhat上搭建了一个TileStache服务器,并从源代码安装了Mapnik 2.2。不过,TileStache给了我一个错误提示:
Traceback (most recent call last):
File "/usr/lib64/python2.6/site-packages/gevent/pywsgi.py", line 508, in handle_one_response
self.run_application()
File "/usr/lib64/python2.6/site-packages/gevent/pywsgi.py", line 494, in run_application
self.result = self.application(self.environ, self.start_response)
File "/usr/lib/python2.6/site-packages/TileStache/__init__.py", line 381, in __call__
status_code, headers, content = requestHandler2(self.config, path_info, query_string, script_name)
File "/usr/lib/python2.6/site-packages/TileStache/__init__.py", line 254, in requestHandler2
status_code, headers, content = layer.getTileResponse(coord, extension)
File "/usr/lib/python2.6/site-packages/TileStache/Core.py", line 414, in getTileResponse
tile = self.render(coord, format)
File "/usr/lib/python2.6/site-packages/TileStache/Core.py", line 500, in render
tile = provider.renderTile(width, height, srs, coord)
File "/usr/lib/python2.6/site-packages/TileStache/Goodies/Providers/MapnikGrid.py", line 72, in renderTile
self.mapnik = mapnik.Map(0, 0)
NameError: global name 'mapnik' is not defined
相关信息:
- 其他帖子建议把'import mapnik'改成'import mapnik2 as mapnik',但我还是收到了同样的错误信息。
- 在其他帖子中,错误来自TileStache/Mapnik.py,但我的错误来自TileStache/Goodies/Providers/MapnikGrid.py。
- 相关帖子:Gunicorn在使用WSGI时失败
问题:
有没有人知道这可能是什么原因呢?提前谢谢大家!
2 个回答
0
...我在2018年用Mapnik 3和TileStache时,遇到了和8月22日几乎一样的错误。虽然有人给出的解决办法没帮上我,但后来我发现Mapnik的Python绑定在新版本中是单独安装的。
我在这个页面上找到了解决办法,直接在命令行中运行:
pip install mapnik
这样我就能顺利运行Python解释器并导入mapnik了。
不过有一个小注意事项。那个Mapnik的新闻页面提到,使用pip安装时会用到“Python Wheels”,而且如果你查看链接的页面,会发现需要pip的版本要大于等于1.4。你可以在命令行中用pip --version
来检查你的pip版本,我的版本是pip 7.1.2。所以大多数人应该不用担心这个问题。
1
这个问题的根源其实很常见,就是找不到libmapnik这个共享库。
当我在Python控制台里尝试导入mapnik时,收到了这个错误信息:
>>> import mapnik
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/site-packages/mapnik/__init__.py", line 69, in <module>
from _mapnik import *
ImportError: libmapnik.so.2.2: cannot open shared object file: No such file or directory
这让我找到了这里的解决办法: https://github.com/mapnik/mapnik/wiki/InstallationTroubleshooting#the-libmapnik-shared-library-is-not-found
解决办法: 把'/usr/local/lib'添加到'/etc/ld.so.conf'文件里,然后运行ldconfig命令。