Библиотека базовой карты с использованием записных книжек 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 из командной строки, и он не выдаст такую же ошибку. Это как-то работает для меня!