导入Geopandas时出现导入错误

4
尝试将geopandas导入到我的jupyter笔记本中时,出现了“ImportError: DLL load failed”错误。我已经从终端中运行了“pip install geopandas”并得到了“Requirement already satisfied”的回应。我还尝试了“pip install --upgrade pip setuptools”,但仍未奏效。以下是导入geopandas时的完整错误报告:
ImportError                               Traceback (most recent call last)
<ipython-input-2-fc7d1d298f0c> in <module>()
----> 1 import geopandas

~\AppData\Local\Continuum\Anaconda3\lib\site-packages\geopandas\__init__.py in <module>()
      2 from geopandas.geodataframe import GeoDataFrame
      3 
----> 4 from geopandas.io.file import read_file
      5 from geopandas.io.sql import read_postgis
      6 from geopandas.tools import sjoin

~\AppData\Local\Continuum\Anaconda3\lib\site-packages\geopandas\io\file.py in <module>()
      1 import os
      2 
----> 3 import fiona
      4 import numpy as np
      5 

~\AppData\Local\Continuum\Anaconda3\lib\site-packages\fiona\__init__.py in <module>()
     67 from six import string_types
     68 
---> 69 from fiona.collection import Collection, BytesCollection, vsi_path
     70 from fiona._drivers import driver_count, GDALEnv
     71 from fiona.drvsupport import supported_drivers

~\AppData\Local\Continuum\Anaconda3\lib\site-packages\fiona\collection.py in <module>()
      7 
      8 from fiona import compat
----> 9 from fiona.ogrext import Iterator, ItemsIterator, KeysIterator
     10 from fiona.ogrext import Session, WritingSession
     11 from fiona.ogrext import (

ImportError: DLL load failed: The operating system cannot run %1.

所有帮助都受到赞赏。

请尽可能详细地说明您如何安装geopandas。因为您提到了“pip install geopandas”,但似乎您正在使用Anaconda?您是否尝试过“conda install geopandas”? - joris
我最初是通过Anaconda下载的geopandas。我已经尝试了conda install -c conda-forge geopandas,以及pip install geopandasconda install geopandas,但仍然没有成功。 - E. Lutins
你不应该混合所有的依赖项,正是这些依赖项导致了问题(在这种情况下是fiona和gdal),因此仅重新安装geopandas并没有任何区别。你需要卸载所有依赖项(以及它们的依赖项),然后使用“conda install geopandas”进行干净的安装。 - joris
删除通过安装geopandas安装的所有软件包并不容易。因此,为了测试,我会先创建一个新的conda环境,看看它是否能在那里运行:conda create -n test-env-geopandas python=3.6 geopandas - joris
@E.Lutins,你解决了这个问题吗? - Ahmad Senousi
4个回答

3

首先将conda渠道添加到您的设置中(最后一个渠道具有最高优先级)。

conda config --add channels conda-forge
conda config --add channels defaults

然后尝试使用conda创建新的环境。
conda create -n test_python python=3.7 geopandas

在我的情况下,问题出在 gdal 上,特别是在 conda-forge 上的最新版本上(之前的版本运行正常)。如果在测试环境中 geopandas 安装失败,您可以尝试使用 conda 安装 gdal 的此版本(win64)。
conda install "downloaded file path"

这对我有用。另外一个方法是在安装时使用 conda create -n test_python -c conda-forge python=3.7 geopandas 指定一个通道,可以使用 conda-forgeanaconda - rovyko

2
出现错误的原因在于,Boeing教授在他的博客文章中很好地解释了这个问题:(链接)
引用:

看起来,在Linux和Mac上pip安装geopandas是没有问题的。但是,它的一些依赖项具有C扩展,这会导致在Windows上使用pip编译失败…… 在Windows上最好的选择是尽可能安装Python wheels,因为它们包含预编译的扩展。带有Anaconda的conda软件包管理器为其存储库中可用的软件包执行此操作。或者,位于加州大学尔湾分校荧光动力学实验室的Christoph Gohlke维护着一个大型的针对Windows的Python wheels库。

解决方案:您需要手动卸载 geopandas 及其依赖项,并手动安装软件包,这是我遇到该问题的解决方法。要做到这点:
  1. 首先,您必须通过在命令提示符中写入conda uninstall <package name>(例如: conda uninstall fiona)来卸载 OSGeo4W、GDAL、Fiona、pyproj、rtree 或 shapely 的任何现有包。

  2. Gohlke下载 GDAL,Fiona,pyproj,rtree 和 shapely 的 wheels。确保您选择与您的体系结构(64位)和 Python 版本(2.7 或 3.6)匹配的 wheel 文件。

  3. 根据第2步所述的顺序安装您下载的 wheel 文件。命令将类似于:pip install GDAL-2.2.4-cp36-cp36m-win_amd64.whl

  4. 向 Windows PATH 环境变量添加新的 GDAL 路径(例如 "C:\Anaconda\Lib\site-packages\osgeo"),您必须在计算机中查找 osgeo 的位置。要了解如何添加新的 PATH,请单击此处


0

我们遇到了同样的问题,但是通过使用Python 3.7.1和geopandas 0.6.1,问题已经得到解决:

conda create -n test_python python=3.7.1 geopandas=0.6.1

为了在 Jupyter 中切换到正确的环境,我们安装了 nb_conda (请参见 如何在 Jupyter Notebook 中选择您的 conda 环境)


0

最近在我的工作机器上安装geopandas时遇到了这个问题(我没有管理员权限添加目录到PATH环境)。

我意识到pip安装过程为osgeo创建了2个文件夹。我只需将所有可执行文件(*.exe)的文件复制到带有python脚本(*.py)的文件夹中,导入就可以正常工作。(我猜测python脚本假定其他文件在同一个目录中)

移动文件后,您可能需要重新启动jupyter才能注册更改。

例如:将Users\USERNAME\AppData\Roaming\Python\Lib\site-packages\osgeo的内容复制到Users\USERNAME\AppData\Roaming\Python\Python27\site-packages\osgeo

希望对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接