2017-02-16 30 views
0

Я нахожусь на mac python3 на ноутбуке jupyter. Нажимаем на себя, чтобы узнать больше python через проект на дорожных картах.NetworkX read_shp нуждается в GDAL

Я читаю в шейп как так

import networkx as nx 
g = nx.read_shp('Road files/geo_export_4d537b7d-a470-4eb9-b147-1d0ea89e6b60.shp') 

И это работает денди.

Но потом я прочитал около OSMnx и подумал: «Это круто! Я мог бы динамически вытаскивать шейп-файлы, а не искать их онлайн».

Поэтому я попытался установить (pip install osmnx), но продолжал получать сбои. Поэтому я попробовал другой упомянутый метод (conda install -c conda-forge osmnx).

Теперь я уже не может запустить свой первоначальный NetworkX read_shp из-за этой ошибки:

ImportError: read_shp requires OGR: http://www.gdal.org/ 

. Я пошел на сайт и установил GDAL, но ошибка сохраняется.

Я также не могу импортировать osmnx. Она ошибки на from fiona.ogrext import Iterator, ItemsIterator, KeysIterator благодаря

ImportError: dlopen(/Users/sb/anaconda/lib/python3.5/site-packages/fiona/ogrext.cpython-35m-darwin.so, 2): Library not loaded: @rpath/libjpeg.8.dylib 
    Referenced from: /Users/sb/anaconda/lib/libgdal.20.dylib 
    Reason: image not found 

1 \ Что, черт возьми, я просто в моей среде?

2 \ Как восстановить сетевую функциональность? Предположительно через надлежащую установку GDAL (re?).

3 \ Как приготовить для osmnx?

Извините за туманную открытость здесь, я подтолкнул свой код слишком далеко от моих возможностей.

Update Я побежал conda config --add channels conda-forge и повторный запуск conda install gdal и conda install libgdal.

К сожалению, я до сих пор без ошибок, но это другая ошибка, утверждая, что NetworkX нуждается в GDAL (который должен быть установлен?)

/Users/sb/anaconda/lib/python3.6/site-packages/networkx/readwrite/nx_shp.py in read_shp(path, simplify) 

ImportError: read_shp requires OGR: http://www.gdal.org/ 

FWIW, /Users/sb/anaconda/lib/ имеет как папку python3.6 и python3.5.

+0

FWIW, похоже, что я не один: https://github.com/gboeing/osmnx/issues/25 Но после этих шагов меня никуда не денется, и я не уверен, что понимаю, но, похоже, «Проблема с упаковкой Anaconda или conda-forge» – ScottieB

ответ

1

В общем, вы можете избежать смешивания conda channels. Предположительно, ваша среда по умолчанию была defaults, а затем вы установили OSMnx через канал conda-forge. На практике он обычно работает нормально, но иногда он может вызвать конфликты пакетов, как то, что вы видите.

Пер с OSMnx documentation, вы можете установить его в чистом, посвященной виртуальной среде, чтобы гарантировать ее выделяют:

conda create --yes -c conda-forge -n OSMNX python=3 osmnx 
source activate OSMNX 

Если это все еще не работает, то есть действительно проблема с Конда-кузницы упаковки для вашей платформы и версии Python, и в этом случае вы должны открыть проблему в своем conda-forge GitHub repo.

Наконец, вы также можете подумать о создании conda-forge канала с наивысшим приоритетом в настройке anaconda.Проверьте файл .condarc и убедитесь, что канал conda-forge находится поверх defaults, поэтому он получает приоритет. Как another answer в других местах свидетельствуют, есть 3 основные причины для использования в Конда-кузнечный канала вместо канала значений по умолчанию поддерживается Континуум:

  1. пакеты на Конда-горне может быть более актуальным, чем те, по умолчанию канал
  2. Есть пакеты на канале conda-forge, которые недоступны по умолчанию
  3. Вы предпочитаете использовать зависимость, например openblas (from conda-forge) вместо mkl (по умолчанию).

Wes McKinney имеет similarly commented о преимуществах использования кузнечной кузницы.

+0

Спасибо за ответ! Я не вижу файл .condarc в/Users/me,/Users/me/anaconda или/Users/me/anaconda/bin. Это то, что создается автоматически или я должен его создавать? – ScottieB

+0

Конда [документация] (https://conda.io/docs/config.html#the-conda-configuration-file-condarc) обсуждает файл '.condarc'. – eos

+0

См. Также этот [conda-forge PR] (https://github.com/conda-forge/conda-forge.github.io/pull/325) – eos