【问题标题】:Basemap import error in PyCharm — KeyError: 'PROJ_LIB'PyCharm 中的底图导入错误 — KeyError: 'PROJ_LIB'
【发布时间】:2020-09-05 22:43:39
【问题描述】:

我尝试使用 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'

我对 PyCharm 上的这个错误感到困惑,因为相同的脚本在 Jupyter 或 Spyder 上运行正确! PyCharm 中的环境是 ../anaconda3/lib/python3.6,与 anaconda 相同。

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

谁能帮我解决这个错误?

【问题讨论】:

  • 大约一周前我开始遇到此错误。我认为这是由 Anaconda pyproj 软件包的最近更新引起的。我发现我可以编辑.../site-packages/mpl_toolkits/basemap/__init__.py 的第 146 行,直接指向 PROJ 库的安装位置,而不是寻找环境变量。 (在我的例子中,anaconda pyproj 包将 PROJ 库安装在 /anaconda/envs/[my env name]/share/proj -- YMMV。)
  • 我在安装 Anaconda 5.7 后遇到了这个问题。

标签: python python-3.x pycharm matplotlib-basemap


【解决方案1】:

对于带有 Anaconda + Python 3.71 的 Windows 10(我确信其他 Python 3 版本和 Windows 7/8),您可以告诉 Basemap Proj4 的“epsg”文件在哪里成功。我没有“环境”或其他任何东西,因为要弄清楚的工作量太大 - 所以我没有 anaconda\share\proj 区域(据我所知,为什么我没有它)。

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

conda install -c conda-forge proj4

如果找到它,它应该是这样的:

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

在导入底图之前使用以下代码,它会起作用。将环境变量 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 Prompt”:

conda install -c conda-forge basemap-data-hires

【讨论】:

    【解决方案2】:

    根据 mewahl 的评论,我已添加到我的 .bashrc 中(我使用 bash):

    export PROJ_LIB=/path/to/your/instalation/of/anaconda/share/proj/

    现在底图(和其他工作)。

    【讨论】:

    • 它解决了我的问题。您可以将其视为一种解决方法,但我评论中链接中指出的解决方案并未解决问题。
    • 这里有一个解决这个问题的好方法[stackoverflow.com/questions/52911232/…
    • 很好的答案,这拯救了我的一天。
    • 除了设置 PROJ_LIB 变量外,我还必须将 pyproj 降级到 1.9.6 才能工作,否则 epsg 文件会丢失。
    【解决方案3】:

    您必须将 Proj lib 的路径设置为较新版本,此路径已被替换。 在导入matplot_toolkits之前写下面两行代码

      ### 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'
    

    【讨论】:

    • 我找这个已经好几个月了!终于成功了
    【解决方案4】:

    答案来自 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
    

    【讨论】:

      【解决方案5】:

      这对我有用:

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

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

      【讨论】:

        【解决方案6】:

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

        我自己也遇到了这个错误,对我来说,解决方案是卸载底图 1.2,然后从我仍然躺在的旧车轮文件中安装底图 1.1,然后再次安装底图 1.2。老实说,我不知道为什么会这样。

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            我无法解决这个问题,但我能够找到替代方案,使用 CartoPy。 正在为 python 2.7 用户维护底图。 CartoPy 是更好的选择

            【讨论】:

              【解决方案9】:

              我遇到了同样的问题。我安装了 anaconda 并安装了 conda install -c anaconda 底图。

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

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

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

              我使用 notepad++ 和 010 编辑器以小块重新保存文件,最后我合并了所有输出。

              【讨论】:

                猜你喜欢
                • 2019-03-25
                • 1970-01-01
                • 2013-11-22
                • 2016-10-28
                • 1970-01-01
                • 2016-03-05
                • 2016-06-24
                • 2019-05-13
                相关资源
                最近更新 更多