Python PyCharm—中的Basemap导入错误;KeyError:';项目库';

Python PyCharm—中的Basemap导入错误;KeyError:';项目库';,python,python-3.x,pycharm,matplotlib-basemap,Python,Python 3.x,Pycharm,Matplotlib Basemap,我试图使用Basemap包通过PyCharm绘制地图,但我遇到了一些问题 from mpl_toolkits.basemap import Basemap` 追溯如下: Traceback (most recent call last): File "/Users/yupeipei/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2963, in run_code exec(co

我试图使用Basemap包通过PyCharm绘制地图,但我遇到了一些问题

from mpl_toolkits.basemap import Basemap`
追溯如下:

Traceback (most recent call last):
File "/Users/yupeipei/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-4-0a24a3a77efd>", line 7, in <module>
    from mpl_toolkits.basemap import Basemap
  File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 20, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/Users/yupeipei/anaconda3/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py", line 146, in <module>
    pyproj_datadir = os.environ['PROJ_LIB']
  File "/Users/yupeipei/anaconda3/lib/python3.6/os.py", line 669, in __ getitem__
    raise KeyError(key) from None
KeyError: 'PROJ_LIB'
回溯(最近一次呼叫最后一次):
文件“/Users/yupeipei/anaconda3/lib/python3.6/site packages/IPython/core/interactiveshell.py”,第2963行,运行代码
exec(代码对象、self.user\u全局、self.user\n)
文件“”,第7行,在
从mpl_toolkits.basemap导入basemap
文件“/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_import_hook.py”,第20行,在do_import中
模块=self.\u系统\u导入(名称,*args,**kwargs)
文件“/Users/yupeipei/anaconda3/lib/python3.6/site packages/mpl_toolkits/basemap/_init__.py”,第146行,在
pyproj_datadir=os.environ['PROJ_LIB']
文件“/Users/yupeipei/anaconda3/lib/python3.6/os.py”,第669行,在_uuugetItem中__
从“无”提升钥匙错误(钥匙)
KeyError:“项目库”
我对PyCharm上的这个错误感到困惑,因为相同的脚本在Jupyter或Spyder上正确运行!PyCharm中的环境是../anaconda3/lib/python3.6,其中与anaconda相同

以前有人遇到过这个错误吗


谁能帮我解决这个错误

在mewahl的评论之后,我将其添加到我的.bashrc中(我使用bash):

导出PROJ_LIB=/path/to/your/instalation/of/anaconda/共享/PROJ/


现在basemap(还有其他的工作)。

这似乎是一个常见的问题。有几个关于它的bug报告

  • ,
我自己也遇到了这个错误,对我来说,解决方案是卸载basemap 1.2,然后从我仍然保存的旧控制盘文件中安装basemap 1.1,然后再次安装basemap 1.2。老实说,我不知道为什么会这样


此外,从上述这些问题中,还有人们报告称为他们工作的各种其他解决方案。希望其中一个也适合这里。

我也面临同样的问题。我安装了anaconda并安装了conda安装-c anaconda basemap

我使用了名为“Spyder”的Anaconda内置IDE。 Spyder比pycharm好。spyder唯一的问题是缺乏智能感知

我通过设置路径解决了Proj4的问题

加载.json较大文件数据集时内核重新启动的其他问题


我使用记事本++和010编辑器以小块的形式重新保存文件,最后合并所有输出

Proj4修复pycharm的简单解决方案是转到设置->项目解释器->+->在搜索字段中编写Proj4并安装

对于装有Anaconda+Python3.71的Windows 10(我确信还有其他Python3版本和Windows 7/8),您可以告诉Basemap Proj4的“epsg”文件将在哪里成功。我没有“环境”之类的东西,因为太多的工作要弄清楚——所以我没有一个anaconda\share\proj区域(据我所知,为什么我没有它)

但是,Basemap需要的是文件“epsg”,使用Windows资源管理器在Anaconda目录中搜索它。如果找不到,请打开“Anaconda提示符”并键入以下内容来安装Proj4:

conda install -c conda-forge proj4
如果它找到了它,它应该是这样的:

C:\Utilities\Python\Anaconda\Library\Share(这是我的所在地,也是\pkgs\放置包本身的地方——如果需要,这些地方也可以工作,我一开始使用它们,但Library one应该通过更新更好地工作(也许)

在导入Basemap之前,请使用以下代码,它将正常工作。将环境变量PROJ_LIB设置为epsg所在的位置,然后Basemap就可以使用了

import os
os.environ["PROJ_LIB"] = "C:\\Utilities\\Python\\Anaconda\\Library\\share"; #fixr
from mpl_toolkits.basemap import Basemap
作为一个不错的奖励,要获取Basemap的高分辨率数据(Anaconda不包括在要开始的Basemap安装中),请在“Anaconda提示符”中键入:


答案来自Github,它对我很有效

import os
import conda

conda_file_dir = conda.__file__
conda_dir = conda_file_dir.split('lib')[0]
proj_lib = os.path.join(os.path.join(conda_dir, 'share'), 'proj')
os.environ["PROJ_LIB"] = proj_lib

from mpl_toolkits.basemap import Basemap

您必须将Proj lib的路径设置为在较新版本中,此路径已被替换。 在导入matplot_工具包之前,请编写以下两行代码

  ### For Window's Users
      import os
      os.environ['PROJ_LIB'] = r'C:\Users\XXXXX\Anaconda3\pkgs\proj4-5.2.0- 
      ha925a31_1\Library\share'
要找到Proj_lib的路径,只需搜索epsg,然后复制此epsg文件位置并放入Proj_lib。 你的问题会解决的

  ### For Linux's Users
  import os
  os.environ['PROJ_LIB'] = r'/home/XXXXXX/anaconda3/pkgs/proj4-5.2.0- 
  he6710b0_1/share/proj'
这对我很有用:

import os
os.environ["PROJ_LIB"] = os.path.join(os.environ["CONDA_PREFIX"], "share", "proj")

这扩展了@Yusuf Baktir的答案,省去了epsg文件路径的硬编码。通过这种方式,代码可以在任何安装了conda(当然是激活的)的机器上运行。

我无法解决此问题,但我找到了另一种方法,即使用CartoPy。 正在为python 2.7用户维护basemap。
CartoPy是一个更好的选择

我大约一周前开始遇到这个错误。我想这是因为最近更新了Anaconda pyproj软件包。我发现我可以编辑
../site packages/mpl_toolkits/basemap/_init__.py
的第146行,直接指向项目库的安装位置,而不是查找环境变量。(在我的例子中,AANCONDA PYPROJ软件包安装了PROJ库在<代码> /ANACODA/EVV/[我的Env No./Stuts/PROJ]/代码> YMMV。)安装AnANDDA 5.7后,我遇到了这个问题。它解决了我的问题。但是我在评论中的链接中指出的解决方案并没有解决这个问题。这里有一个解决这个问题的好方法[很好的回答,这救了我一天。除了设置PROJ_LIB var,我还必须将pyproj降级到1.9.6才能正常工作,否则epsg文件就丢失了。我已经找了几个月了!终于成功了我很高兴它能正常工作并帮助了你。
import os
os.environ["PROJ_LIB"] = os.path.join(os.environ["CONDA_PREFIX"], "share", "proj")