Мапник проблем с импортом OSX 10.6

Я очень новичок в этом (даже не использовал Terminal до вчерашнего дня), но я пытаюсь сделать некоторые карты местности, следуя инструкциям Бьорна Сандвика на http://blog.thematicmapping.org/2012/07/terrain-mapping-with-mapnik.html. Я установил python и mapnik, следуя инструкциям на их соответствующих сайтах, насколько я могу понять, но когда я пытаюсь импортировать mapnik через python в Terminal, я получаю ImportError. Может кто-нибудь более опытный подскажет, как решить проблему? Мне кажется, что он вызывает другую версию python (если я просто набираю python в Terminal вместо /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
  >>> 

ОБНОВЛЕНИЕ: В надежде, что это поможет (и так как я планировал сделать это в любом случае), я обновил свою ОС до Mavericks, удалил все свои версии Python с python.org, следуя инструкциям здесь: Как удалить Python 2.7 на Mac OS X 10.6.4? Затем установил текущую версию Xcode (она не была доступна без платной учетной записи разработчика за 99 долларов в Apple для OSX 10.6.8), снова выполнил перечисленные ниже команды Уильяма, чтобы установить 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
>>>

Я побежал к доктору, на этот раз предупреждений было гораздо меньше, и ни одно из них не показалось мне неожиданным. Я воспользовался советом врача и попытался сбросить мой 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 - это говорит 2.7.5. Когда я смотрю в / usr / local / bin, я вижу следующие файлы: mapnik-config, mapnik-speed-check. Я не вижу никаких файлов mapnik, когда я смотрю в / usr / bin.

ОБНОВЛЕНИЕ 2: ЭТО РАБОТАЛО! Мне просто пришлось заново выполнить функцию "включить привязки Python" в файле 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, и я должен быть в порядке! Большое спасибо тем, кто прокомментировал. У меня недостаточно "репутации", чтобы проголосовать за пост Уильяма, поэтому, если кто-то сможет это сделать, он будет очень признателен!

2 ответа

Решение

Вы правы, у вас есть конфликт версий Python. Так как вы на OSX и вы на самом деле не использовали terminal раньше это не будет "легким исправлением". Я рекомендую вам прочитать эту книгу http://linuxcommand.org/tlcl.php, чтобы понять, как правильно использовать командную строку. Примечание: несмотря на то, что это для Linux, это для оболочки BASH, которая используется по умолчанию в OSX.

Причина, по которой вы получаете Python 2.6, когда вы печатаете только python потому что каталог, содержащий исполняемый файл для этой версии python, указан перед каталогом, содержащим исполняемый файл для Python 2.7, в $PATH переменная окружения. Это также означает, что когда вы установили mapnik он, скорее всего, установил этот модуль в site-packages для Python 2.6 и привязать его к этой версии.

Первое, что нужно проверить, можете ли вы импортировать mapnik в Python 2.6. Так беги 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

Затем установить картник;

brew install mapnik

Если вы используете Homebrew, все должно быть настроено правильно, автоматически и теоретически, не должно быть конфликтов версий.

Даже после установки brew вам придется вручную экспортировать такие привязки

export PYTHONPATH="/usr/local/lib/python2.7/site-packages"
Другие вопросы по тегам