Библиотека базовой карты с использованием записных книжек Anaconda Jupyter - KeyError: PROJ_LIB

Я пытаюсь установить и импортировать библиотеку Basemap в блокнот Jupyter, но при этом возвращается следующая ошибка:

KeyError: 'PROJ_LIB'

После некоторых исследований в Интернете я понял, что должен установить Basemap в отдельную среду в Anaconda. После создания новой среды и установки Basemap (а также всех других соответствующих библиотек) я активировал эту среду. Но при импорте Basemap я все равно получаю тот же KeyError.

Вот что я сделал в своем терминале MacOS:

conda create --name Py3.6 python=3.6 basemap
source activate Py3.6
conda upgrade proj4
env | grep -i proj
conda update --channel conda-forge proj4

Затем в Jupyter Notebook я запускаю следующее:

from mpl_toolkits.basemap import Basemap

Может кто-нибудь сказать мне, почему это приводит к KeyError?

2 ответа

Необходимо установить переменную среды PROJ_LIB либо перед запуском ноутбука, либо в python с os.environ['PROJ_LIB'] = '<path_to_anaconda>/share/proj'

Ссылка Ошибка импорта базовой карты в PyCharm —— KeyError: 'PROJ_LIB'

В командной строке Windows 10: сначала найдите каталог, в котором хранится файл epsg:

where /r "c:\Users\username" epsg.*

...

c: \ Users \ имя пользователя \ AppData \ Local \ conda \ conda \ envs \ envname \ Library \ share \ epsg

...

тогда либо в командной строке:

activate envname

SET PROJ_LIB=c:\Users\username\AppData\Local\conda\conda\envs\envname\Library\share

(убедитесь, что на пути нет пробелов!), а затем

jupyter notebook

или добавьте это в свою записную книжку Jupyter (как предложил Джон Эд):

import os

os.environ['PROJ_LIB'] = r'c:\Users\username\AppData\Local\conda\conda\envs\envname\Library\share'

Проблема возникает из-за того, что расположение файлов "epsg" и PROJ_LIB было изменено для последних версий python, но почему-то они забыли обновить init.py для Basemap. Если вы установили python с использованием anaconda, это возможное расположение для вашего файла espg: C:\Users(xxxx)\AppData\Local\Continuum\anaconda3\pkgs\proj4-5.1.0-hfa6e2cd_1\Library\share Итак, у вас есть добавить этот путь в начале вашего кода в spyder или любом другом поле, которое вы используете.

импорт ОС

os.environ['PROJ_LIB'] = r'C:\Users(xxxx)\AppData\Local\Continuum\anaconda3\pkgs\proj4-5.1.0-hfa6e2cd_1\Library\share'

из mpl_toolkits.basemap import Basemap

Если вы вообще не можете найти файл epsg, вы можете скачать его здесь:

https://raw.githubusercontent.com/matplotlib/basemap/master/lib/mpl_toolkits/basemap/data/epsg

И скопируйте этот файл в свой PATH, например, чтобы:

os.environ['PROJ_LIB'] = 'C: \ Users \ имя пользователя \Anaconda3\pkgs\basemap-1.2.0-py37h4e5d7af_0\Lib\site-packages\mpl_toolkits\basemap\data\'

Это ЕДИНСТВЕННОЕ решение, которое сработало для меня в Windows 10 / Anaconda 3.

Запустите Jupyter Notebook из командной строки, и он не выдаст такую ​​же ошибку. Это как-то работает для меня!

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