• geopandas安装问题记录:ImportError,DLL load failedwindows10


    1. 起因

    由于最近在处理遥感影像、空间矢量数据需要自己写代码实现,就决定用Ananconda在windows10上配置一个地理科学计算的Python环境,在安装geopandas时遇到了一些问题。
    什么是geopandas?

    GeoPandas是一个开源项目,Pandas是Python的一个结构化数据分析的利器,GeoPandas扩展了pandas使用的数据类型,允许对几何类型进行空间操作,DataFrame相当于GIS数据中的一张属性表,使得可以直接操作矢量数据属性表,其目标是使得在python中操作地理数据更方便。

    使用pip在Linux和Mac上安装geopandas可能很简单。然而由于它的几个依赖包都有C扩展,直接安装会导致在Windows上编译失败,最终安装失败。安装geopandas之前需要先安装依赖项 GDAL, Fiona , pyprojrtreeshapely

    2. 解决办法

    环境:Windows 10 64位
    可以使用conda安装(简单),也可以使用pip安装(麻烦些)

    (1). 使用Anaconda(带有大量科学计算包的发行版Python)安装

    这种方法比较简单,尤其是只想快速搭建环境的数据科学处理人员。切换到你的目标虚拟环境后,在命令行输入:

    conda install -c conda-forge geopandas
    

    -c conda-forge表示指定包下载渠道为conda-forge仓库,conda-forge是一个社区组织,维护了大量的由conda管理的开源软件集合,geopandas目前在官方conda仓库是没有的,conda-forge包相对较全也较新。

    执行该命名后conda会自动从conda-forge下载安装geopandas所依赖的项,然后安装geopandas,一步到位。
    这种方法可能会失败,我这里就失败了,看起来所有安装都成功了,但是调用geopandas时输入

    import geopandas
    

    却报错ImportError: DLL load failed: 找不到指定的模块.

    可是明明提示安装成功了啊,通过conda list可以查看到安装列表。
    再输入:

    import sys
    'geopandas' in sys.modules
    

    返回False,说明表面上看起来安装完成了,实际上geopandas是没有安装成功的。
    通过分析发现:直接从conda-forge安装的Fiona是有问题的,虽然安装成功了,但是import 却提示失败,说明不能用。于是我就从 Gohlke(Python非官方的Windows二进制扩展包)下载Fiona,输入:

    pip install + 文件全路径名
    

    安装成功了,此时再测试geopandas是可用的,说明问题解决了。可以看出从conda-forge直接安装的Fiona在我这里是不能用的。

    (2). 手动pip安装

    这种方法较第一种方法来说麻烦一些,需要手动下载、安装多个包。

    1. 卸载已经存在的依赖包首先也是最重要的一点,不要直接使用pip或conda安装,通常会出现一些模糊的或莫名其妙的错误,使故障分析变得困难。如果OSGeo4W、GDAL、Fiona、pyproj、rtree或shapely已经安装,卸载它。后面下载的GDAL wheel文件已经包含一个完整的GDAL—不需要将它与OSGeo4W一起使用。
    2. 下载依赖包GDAL, Fiona , pyprojrtreeshapely,选择对应你的Python版本的项。
    3. 安装下载的依赖项:使用pip命令安装,先安装GDAL,安装方式如 pip install GDAL‑2.3.3‑cp36‑cp36m‑win_amd64.whl 然后安装其他几个依赖项,如果安装过程中报错,有提示缺少VC++ redistributable,则下载对应的VC++分发包安装,再继续安装。
    4. 安装geopandas:直接输入命令:
        pip install geopandas
    

    即可完成geopandas安装。

  • 相关阅读:
    标准C++中的string类的用法总结
    JSON用法简介
    拷贝构造函数的调用时机
    define中的:#,##,#@
    一个二维码支持支付宝和微信支付(下)
    一个二维码支持支付宝和微信支付(上)
    【JAVA笔记】JAVA后端实现统一扫码支付:微信篇
    java生成二维码,读取(解析)二维码图片
    Java程序员的日常—— IOUtils总结
    Java: Map里面的键和值可以为空吗?
  • 原文地址:https://www.cnblogs.com/madhevin/p/10481879.html
Copyright © 2020-2023  润新知