【问题标题】:Fixing "pyproj import _datadir" error: specified module could not be found修复“pyproj import _datadir”错误:找不到指定的模块
【发布时间】:2020-05-12 22:53:52
【问题描述】:

我正在 Jupyter Notebook 中做一个 Python 项目。在我尝试使用 Basemap 之前,一切都很好,我已经在 Anaconda 终端中为我的环境安装了 Basemap:

conda install -c anaconda basemap

我尝试导入:

from mpl_toolkits.basemap import Basemap as Basemap

给出错误:

ImportError                               Traceback (most recent call last)
<ipython-input-17-c19d6352b4bd> in <module>
      3 #from pyproj import _datadir
      4 #from pyproj import _datadir, datadir
----> 5 from mpl_toolkits.basemap import Basemap as Basemap

~\Anaconda3\envs\name_of_my_env\lib\site-packages\mpl_toolkits\basemap\__init__.py in <module>
     44 from matplotlib.lines import Line2D
     45 from matplotlib.transforms import Bbox
---> 46 import pyproj
     47 from mpl_toolkits.axes_grid1 import make_axes_locatable
     48 from matplotlib.image import imread

~\Anaconda3\envs\name_of_my_env\lib\site-packages\pyproj\__init__.py in <module>
     48 import warnings
     49 
---> 50 from pyproj import _datadir
     51 from pyproj._list import (  # noqa: F401
     52     get_angular_units_map,

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

认为我安装的 pyproj 存在问题:

conda install -c conda-forge pyproj
conda install -c conda-forge/label/broken pyproj

这并没有解决任何问题,所以我安装了:

conda install -c conda-forge geopandas

为了很好的衡量,但即使import geopandas 也不起作用,给:

ImportError                               Traceback (most recent call last)
<ipython-input-18-5f9c797680a3> in <module>
      1 import pandas as pd
----> 2 import geopandas
      3 #from pyproj import _datadir
      4 #from pyproj import _datadir, datadir
      5 from mpl_toolkits.basemap import Basemap as Basemap

~\Anaconda3\envs\name_of_my_env\lib\site-packages\geopandas\__init__.py in <module>
----> 1 from geopandas.geoseries import GeoSeries  # noqa
      2 from geopandas.geodataframe import GeoDataFrame  # noqa
      3 from geopandas.array import _points_from_xy as points_from_xy  # noqa
      4 
      5 from geopandas.io.file import read_file  # noqa

~\Anaconda3\envs\name_of_my_env\lib\site-packages\geopandas\geoseries.py in <module>
      7 from pandas.core.internals import SingleBlockManager
      8 
----> 9 from pyproj import CRS, Transformer
     10 from shapely.geometry.base import BaseGeometry
     11 from shapely.ops import transform

~\Anaconda3\envs\name_of_my_env\lib\site-packages\pyproj\__init__.py in <module>
     48 import warnings
     49 
---> 50 from pyproj import _datadir
     51 from pyproj._list import (  # noqa: F401
     52     get_angular_units_map,

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

显然,pyproj import _datadir 出现错误,但我不知道如何解决。

【问题讨论】:

    标签: python jupyter-notebook geolocation


    【解决方案1】:

    我知道这不是一个理想的解决方案,但我能够设法解决此问题的唯一方法是完全卸载 Anaconda,然后在新环境中重新安装 Anaconda 和我的软件包。看到你两天前发的帖子,我敢肯定你现在可能已经诉诸于此了。

    我在重新安装之前尝试过的事情:

    1. conda update conda
    2. conda install anaconda=2020.02
    3. 创建了一个全新的环境,仅通过conda install -c conda-forge pyproj 安装了pyproj。在安装过程中,我got a warning 我应该手动删除“libssl-1_1-x64.dll”文件,因为 conda 显然无法做到这一点。手动删除后,我还有useless ImportError

    我在使用geopandas 0.6.3 的环境中没有收到此错误,但我需要更新到0.7.0 才能使用geopandas.clip() 功能。在此更新之后,我开始遇到 pyproj 的此问题。同样,这不是一个理想的答案,但我能够通过卸载并重新安装来“解决”我的问题。

    【讨论】:

      【解决方案2】:

      我自己遇到了这个问题。这是为我解决的问题。

      pyproj 寻找_datadir 模块时,它正在寻找your-env/Lib/site-packages/pyproj/_datadir.pyd

      当我浏览到那个目录时,我发现所有的 *.pyd 文件都被命名为 *.cp38-win_amd64.pyd 这在其他包中似乎很常见,也许有更专业的人可以解释为什么它会出现或没有出现在各种包文件名中。

      无论如何,删除两个 . 字符之间的那段文本似乎可以做到,即重命名 _datadir.cp38-win_amd64.pyd > _datadir.pyd

      我在编辑文件名后使用geopandas 测试了一些操作,一切正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-06
        • 2015-12-22
        • 1970-01-01
        • 2017-11-05
        • 1970-01-01
        • 1970-01-01
        • 2010-12-28
        相关资源
        最近更新 更多