使用Anaconda Jupyter笔记本电脑的底图库-关键错误:PROJ_LIB

使用Anaconda Jupyter笔记本电脑的底图库-关键错误:PROJ_LIB,anaconda,jupyter-notebook,matplotlib-basemap,Anaconda,Jupyter Notebook,Matplotlib Basemap,我正在尝试将Basemap库安装并导入我的Jupyter笔记本,但这会返回以下错误: KeyError: 'PROJ_LIB' 在网上进行了一些研究之后,我知道我将在Anaconda的一个单独的环境中安装Basemap。创建新环境并安装Basemap(以及所有其他相关库)后,我激活了环境。但在导入Basemap时,我仍然会收到相同的KeyError 以下是我在MacOS终端中所做的操作: conda create --name Py3.6 python=3.6 basemap source a

我正在尝试将Basemap库安装并导入我的Jupyter笔记本,但这会返回以下错误:

KeyError: 'PROJ_LIB'
在网上进行了一些研究之后,我知道我将在Anaconda的一个单独的环境中安装Basemap。创建新环境并安装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笔记本中运行以下操作:

from mpl_toolkits.basemap import Basemap

有人能告诉我为什么这会导致键错误吗?

需要在启动笔记本之前设置PROJ_LIB环境变量,或者在python中使用
os.environ['PROJ_LIB']='/share/PROJ'


参考

问题发生在最近版本的python更改了“epsg”和PROJ_LIB的文件位置,但不知何故他们忘记了更新Basemap的init.py。如果您使用anaconda安装了python,则espg文件可能位于以下位置:

C:\Users\(xxxx)\AppData\Local\Continuum\anaconda3\pkgs\proj4-5.1.0-hfa6e2cd\u 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导入basemap

从命令提示符启动Jupyter Notebook,它不会抛出相同的错误。它不知怎么对我有用

在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所建议):


如果您根本找不到epsg文件,可以在此处下载:

并将此文件复制到您的路径,例如:

os.environ['PROJ_LIB']=“C:\Users\username\Anaconda3\pkgs\basemap-1.2.0-py37h4e5d7af_0\LIB\site packages\mpl_工具包\basemap\data\n


这是在Windows 10/Anaconda 3上对我有效的唯一解决方案。

非常感谢。--------------------------------------------------------------------------------------导入操作系统;#----------os.environ['PROJ_LIB']='/MYFOLDER/anaconda3/share/PROJ'.--mpl_toolkits.basemap导入BasemapIs真的没有别的办法,只有把这行代码?!在从头开始构建新的conda环境后,我出现了此错误。确定:我编辑了/home/../miniconda2/envs/../lib/python2.7/site packages/mpl_工具包/basemap/__init__;.py以包含答案行,这样无论从何处执行绘图脚本,都可以设置变量。对于SageMaker笔记本,我必须这样做(痛苦):#conda install basemap#conda install-c conda forge proj4#conda install-c conda forge basemap data hires#cp/home/ec2 user/anaconda3/pkgs/proj4-5.2.0-he6710b0_1/share/proj/epsg/home/ec2 user/anaconda3/share导入os.environ[“proj#LIB”]=“/home/ec2 user/anaconda3/share/anaconda3/share”从mpl_toolkits导入matplotlib作为mpl导入matplotlib.pyplot作为plt。basemap导入BasemapI在任何地方都看不到解决方案,但以下内容对于在任何地方部署笔记本电脑都是一致的
os.environ['PROJ_LIB']=os.environ['CONDA_PREFIX']+'/share/PROJ'
此解决方案确实有效。谢谢你的贡献,@Pavlo。关键是将
os.environ['PROJ_LIB']
设置为包含
epsg
文件的文件夹的路径。在尝试了许多其他建议后,我在Anaconda Jupyter笔记本中编写了代码:import os.environ['PROJ_LIB']=r'c:\Users\Paisa\anaconda3\Library\share'
import os

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