【问题标题】:netCDF4 and Basemap package on Python 3.7Python 3.7 上的 netCDF4 和 Basemap 包
【发布时间】:2020-11-24 15:39:40
【问题描述】:

我希望有人可以帮助我。

我正在使用 mpl_toolkits.basemap 和 netCDF4.Dataset 包在地图上绘制 netcdf 数据。 几个月前他们工作得很好,我成功地绘制了我想要的东西。现在我想用更新的数据更新我的工作,但同样的代码不再工作了。 我已经多次重新安装了 python,使用了几个目录(如 conda_forge 和 anaconda)和不同的系统(pip、miniconda、anaconda),但对我没有任何作用,所以我真的不知道如何继续。

我目前在 Win10 机器上使用通过 miniconda 安装的 python 3.7,并在此特定代码中使用以下包:

### IMPORT MODULES AND FUNCTIONS ##############################################
import os
import datetime             as dt
import numpy                as np
import matplotlib
import matplotlib.pyplot    as plt
from   netCDF4              import Dataset
from   mpl_toolkits.basemap import Basemap

from netCDF4 import Dataset 产生:

ImportError: DLL load failed: The specified module could not be found.

from mpl_toolkits.basemap import Basemap 产生:

  File "C:\Users\drauter\Dropbox\OZONE\Extremes\geopotential_date_level_PLOT.py", line 32, in <module>
    from   mpl_toolkits.basemap import Basemap

  File "C:\Users\drauter\Miniconda3\lib\site-packages\mpl_toolkits\basemap\__init__.py", line 155, in <module>

    pyproj_datadir = os.environ['PROJ_LIB']

  File "C:\Users\drauter\Miniconda3\lib\os.py", line 678, in __getitem__
    raise KeyError(key) from None

KeyError: 'PROJ_LIB'

Proj 已经安装好了.....

有没有人经历过类似的事情,或者有人知道我可以尝试什么吗? 我也对替代方案持开放态度,尽管我真的不想因此重写整个代码。

提前致谢!

【问题讨论】:

    标签: python-3.7 importerror matplotlib-basemap keyerror netcdf4


    【解决方案1】:

    仔细检查 conda 是否认为 netCDF4basemap 已安装

    conda list
    

    您也可以尝试重新安装:

    conda install --force-reinstall netcdf4
    conda install --force-reinstall basemap
    

    从那里开始,我实际上不会运行脚本,只是看看它是否有效:

    python -c 'from netCDF4 import Dataset'
    python -c 'from mpl_toolkits.basemap import Basemap'
    

    【讨论】:

      【解决方案2】:

      根据 conda 列表安装了两个软件包(包括 proj4,这是底图工作所必需的)。

      我还是强制重新安装了它们,但是

      python -c 'from netCDF4 import Dataset'
      python -c 'from mpl_toolkits.basemap import Basemap'
      

      不幸的是,它不起作用,它说:

      SyntaxError: EOL while scanning string literal
      

      谢谢!

      【讨论】:

        【解决方案3】:

        关于 Basemap 的问题,这是某些版本的已知问题: https://github.com/matplotlib/basemap/issues/483

        即使安装了 PROJ4,Basemap 仍然需要你设置环境变量PROJ_LIB。但实际上 Basemap 知道 PROJ4 的位置,因为它成功导入了pyproj

        一种可能的解决方案是自己替换mpl_toolkits\basemap\__init__.py 中的问题行:

        pyproj_datadir = os.environ['PROJ_LIB']
        

        if 'PROJ_LIB' in os.environ:
            pyproj_datadir = os.environ['PROJ_LIB']
        else:
            pyproj_datadir = pyproj.datadir.pyproj_datadir
        

        假设您的 Basemap 版本之前导入了 pyproj 模块。

        【讨论】:

          猜你喜欢
          • 2021-03-20
          • 2016-07-15
          • 2013-08-09
          • 1970-01-01
          • 1970-01-01
          • 2020-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多