Глобальное имя 'mapnik' не определено при использовании Tilestache

Я установил сервер TileStache в Redhat, установив 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". Но я получил то же сообщение об ошибке.
  • В других сообщениях происходит из TileStace/Mapnik.py, но мой из TileStache/Goodies/Providers/MapnikGrid.py.
  • Связанный Пост: Gunicorn терпит неудачу при использовании WSGI

Вопрос:

Кто-нибудь знает, что может быть причиной этого? Заранее спасибо!

2 ответа

Решение

Оказывается, корень этой проблемы довольно распространен. Общая библиотека libmapnik не найдена.
Когда я попытался импортировать mapnik из консоли python, я получил эту ошибку:

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

... сохранение потока 22 августа в 2018 году с Mapnik 3 и TileStache, но с почти идентичной ошибкой. Принятый ответ мне не помог, и оказывается, что привязки Mapnik Python устанавливаются отдельно в более поздних версиях.

Глядя здесь, я смог запустить из командной строки, просто:

pip install mapnik

И это помогло мне запустить интерпретатор Python и импортировать mapnik.

Одно потенциальное предостережение. На этой странице новостей Mapnik упоминается, что в установке pip используется "Колеса Python", и если вы просматриваете связанную страницу, упоминается, что вам понадобится pip >= 1.4. Вы можете проверить свой Пип с pip --version в командной строке, и мой был пип 7.1.2. Так что, скорее всего, это не является проблемой для большинства людей.

Другие вопросы по тегам