PROJ_LIB Spyder 导入底图时出错

PROJ_LIB error in Spyder with importing basemap

我是 python 的新手,我正在尝试将 basemap 导入 Spyder 3.6。我在 Anadonda Prompt 和 Spyder import basemap 中使用了 conda install basemap,但出现错误


  File "<ipython-input-1-d9467465a3b6>", line 1, in <module>
    from mpl_toolkits.basemap import Basemap

  File "D:\Anaconda_Python\lib\site-packages\mpl_toolkits\basemap\__init__.py", line 155, in <module>
    pyproj_datadir = os.environ['PROJ_LIB']

  File "D:\Anaconda_Python\lib\os.py", line 678, in __getitem__
    raise KeyError(key) from None

KeyError: 'PROJ_LIB'

我看过类似的问题,但对我没有用:

这似乎是一个常见问题。问题在于 Basemap 没有正确定位 Proj4 的 "epsg" 文件所在的位置。 这可以通过首先找到文件 'epsg' 所在的位置然后使用一些代码添加路径本身来轻松解决。

应该是这样的地方(这是我的所在位置,根据环境名称和下载Anaconda的位置不同而不同)

C:\Users\XXX\Anaconda3\envs\env\Library\share

查看您的错误消息,我相信您的错误消息应该位于 "D:\Anaconda_Python\share"

中的某处

然后在导入底图之前插入以下代码,它应该可以工作。

import os
os.environ["PROJ_LIB"] = r'C:\Users\XXX\Anaconda3\envs\env\Library\share (location of epsg)'
from mpl_toolkits.basemap import Basemap

您也可以将 epsg 文件复制到它搜索它的目录,在您的情况下 D:\Anaconda_Python\share\proj\

我遇到了同样的错误(Windows 10,Anaconda)。所以我试图找到出现在 'C:\Users\Yury\anaconda3\Library\share' 的 "epsg" 文件并通过添加这些行我终于让它工作了

import os
os.environ["PROJ_LIB"] = 'C:\Users\Yury\anaconda3\Library\share'

或者同样可以做到

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, 'Library'), 'share')
os.environ["PROJ_LIB"] = proj_lib

感谢您提供这段代码