Не удается импортировать базовую карту в Fedora 21

Я установил python-basemap и python-basemap-data (и все его зависимости, например, pyproj), но не могу импортировать Basemap в простую программу Python из-за этой ошибки:

$ python mapper.py
Traceback (most recent call last):
  File "mapper.py", line 4, in <module>
    from mpl_toolkits.basemap import Basemap
  File "/usr/lib64/python2.7/site-packages/mpl_toolkits/basemap/__init__.py", line 30, in <module>
    from mpl_toolkits.basemap import pyproj
  File "/usr/lib64/python2.7/site-packages/mpl_toolkits/basemap/pyproj.py", line 241, in <module>
    raise IOError(msg)
IOError: proj data directory not found. Expecting it at: /usr/lib64/python2.7/site-packages/mpl_toolkits/basemap/data

Я попробовал решение (заменив фрагмент кода) отсюда: Заставьте PyInstaller импортировать Basemap , но и это не работает. У Вас есть какие-то предложения?


person HyperCube    schedule 16.12.2014    source источник
comment
Вы проверили, что установка данных произошла в правильный подкаталог?   -  person David Manheim    schedule 24.12.2014


Ответы (1)


В Fedora 20 в /usr/lib64/python2.7/site-packages/mpl_toolkits/basemap/pyproj.py была строка:

pyproj_datadir = '/usr/share/basemap'

В Fedora 21 каталог данных был изменен на:

pyproj_datadir = os.sep.join([os.path.dirname(__file__), 'data'])

В Fedora 21 pyproj.py ищет данные в /usr/lib64/python2.7/site-packages/mpl_toolkits/basemap/data, но пакеты rpm для python-basemap-data и python-basemap-data-hires по-прежнему помещают данные проекта в /usr/share/basemap. Пока это не будет исправлено, я нашел два обходных пути:

  1. Создайте каталог /usr/lib64/python2.7/site-packages/mpl_toolkits/basemap/data и скопируйте данные из /usr/share/basemap в этот новый каталог или

  2. Отредактируйте файл pyproj.py и измените строку

.

pyproj_datadir = os.sep.join([os.path.dirname(__file__), 'data'])

to

pyproj_datadir = '/usr/share/basemap'    
person Bill Rison    schedule 29.12.2014
comment
Спасибо за этот полный ответ! Решение 1) работает без нареканий. Решение 2) терпит неудачу, потому что он все еще не может найти некоторые коды epsg. Будем надеяться, что исправление тоже скоро появится, избегайте таких обходных путей. - person HyperCube; 12.01.2015