我正在尝试将底图库安装并导入到Jupyter Notebook中,但这会返回以下错误:
KeyError: 'PROJ_LIB'
在进行了一些在线研究之后,我了解我将在Anaconda的单独环境中安装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?
答案 0 :(得分:9)
需要在启动笔记本之前或使用os.environ['PROJ_LIB'] = '<path_to_anaconda>/share/proj'
在python中设置PROJ_LIB环境变量
答案 1 :(得分:2)
由于python的最新版本已更改了“ epsg”和PROJ_LIB的文件位置,因此出现了问题,但是他们不知何故忘记为底图更新 init .py。如果您使用anaconda安装了python,则这是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导入底图
答案 2 :(得分:1)
在Windows 10命令行中:首先找到 epsg 文件的存储目录:
where /r "c:\Users\username" epsg.*
...
c:\ Users \ username \ 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笔记本中(由john ed建议):
import os
os.environ['PROJ_LIB'] = r'c:\Users\username\AppData\Local\conda\conda\envs\envname\Library\share'
答案 3 :(得分:1)
如果您根本找不到epsg文件,则可以在此处下载:
https://raw.githubusercontent.com/matplotlib/basemap/master/lib/mpl_toolkits/basemap/data/epsg
将此文件复制到您的PATH,例如到:
os.environ ['PROJ_LIB'] ='C:\ Users \ username \ Anaconda3 \ pkgs \ basemap-1.2.0-py37h4e5d7af_0 \ Lib \ site-packages \ mpl_toolkits \ basemap \ data \'
这是在Windows 10 / Anaconda 3上对我有效的唯一解决方案。
答案 4 :(得分:-2)
从命令提示符处启动Jupyter Notebook,它不会引发相同的错误。它以某种方式对我有用!