Rub*_*enB 12 matplotlib-basemap anaconda jupyter-notebook
我正在尝试安装并将Basemap库导入我的Jupyter Notebook,但这会返回以下错误:
KeyError: 'PROJ_LIB'
Run Code Online (Sandbox Code Playgroud)
经过一些网上研究,我了解到我要在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
Run Code Online (Sandbox Code Playgroud)
然后在Jupyter Notebook中运行以下代码:
from mpl_toolkits.basemap import Basemap
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么会导致KeyError?
Ran*_*dyP 12
需要在启动笔记本之前或在python中设置PROJ_LIB环境变量 os.environ['PROJ_LIB'] = '<path_to_anaconda>/share/proj'
参考.PyCharm中的底图导入错误 - KeyError:'PROJ_LIB'
在Windows 10命令行中:首先找到epsg文件的存储目录:
where /r "c:\Users\username" epsg.*
Run Code Online (Sandbox Code Playgroud)
...
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
Run Code Online (Sandbox Code Playgroud)
(确保路径中的尾部空格没有前导!),然后
jupyter notebook
Run Code Online (Sandbox Code Playgroud)
或将其添加到您的Jupyter笔记本中(由约翰·埃德(John ed)建议):
import os
os.environ['PROJ_LIB'] = r'c:\Users\username\AppData\Local\conda\conda\envs\envname\Library\share'
Run Code Online (Sandbox Code Playgroud)
小智 7
问题发生的原因是“epsg”和 PROJ_LIB 的文件位置已针对最新版本的 python 进行了更改,但不知何故他们忘记更新Basemap的init .py。如果您使用 anaconda 安装了 python,这是您的 espg 文件的可能位置:
C:\Users\(xxxx)\AppData\Local\Continuum\anaconda3\pkgs\proj4-5.1.0-hfa6e2cd_1\Library\share
因此,您必须在 spyder 或您正在使用的任何字段中的代码开头添加此路径。
import os
os.environ['PROJ_LIB'] = r'C:\Users\(xxxx)\AppData\Local\Continuum\anaconda3\pkgs\proj4-5.1.0-hfa6e2cd_1\Library\share'
from mpl_toolkits.basemap import Basemap
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6253 次 |
| 最近记录: |