【问题标题】:Install gdal==2.3.3 into a venv with pip使用 pip 将 gdal==2.3.3 安装到 venv 中
【发布时间】:2020-02-16 20:27:59
【问题描述】:

我正在使用带有 python 3.7.4 的 anaconda,并且正在使用 VScode。我目前正在创建一个主要使用散景的 Flask webapp,我将其部署在谷歌应用引擎(gcloud)上。为了使用 GIS,我需要安装 geopandas,这将需要 gdal、fiona、rtree、shapely、pyproj、numpy 等。我在虚拟环境中工作,所以我可以直接使用 pip install [file.whl] 安装 .whl 文件,它可以在本地正常工作。我还为 gdal_data 创建了环境变量,并将其添加到 PATH 变量中。因此,自从我安装 geopandas 以来,我一直在尝试部署该应用程序,而谷歌却给我一个 gdal-config not found 的错误。我试图以我对依赖项和部署的了解不足来深入研究它。我发现如下:

conda 将取代 gdal 3.0.4 并安装 gdal 2.3.3 pip 没有这个版本,当遇到问题时。 只要我理解它,谷歌将使用我的 requirements.txt 将我在我的虚拟环境中使用的库安装到他们的云环境中,所以一旦 pip 找不到我将通过的 gdal 2.3.3 版本就会抛出错误到我的 requirements.txt 和我手动安装的那个。 此外,作为构建 GIS 绘图的支柱之一的 fiona 与 conda 坚持要取代的 gdal 版本不兼容。

我已经阅读了很多内容并花费了大量时间来处理这个错误。有很多关于 Linux 的信息,但我找不到任何可以帮助我的信息。

如果有人可以帮助我,将不胜感激。

【问题讨论】:

    标签: python gcloud gdal


    【解决方案1】:

    我在安装 gdal 时遇到了同样的问题:

    ... ma​​in.gdal_config_error: [Errno 2] No such file or directory: 'gdal-config': 'gdal-config' ...

    问题是底层 docker 容器没有运行这个版本的 gdal 所需的 C 库。所以你不能使用默认的应用引擎环境来运行你的应用程序。

    然后解决方案是创建一个自定义 runtime(即 docker 容器)来运行您的应用引擎实例。还有另一个 stackoverflow post 解释了如何做到这一点。

    最重要的一步是包括:

    sudo apt-get install gdal-bin python-gdal
    

    【讨论】:

    • 谢谢你!这很清楚,我检查了另一篇文章的解释,这很好而且很聪明。我正在将我的笔​​记本电脑换成 Linux,自从我开始部署应用程序以来,windows 一直让人头疼。我认为这个家伙的解决方案会像一个魅力,我只是不确定他的 dokerfile 会是哪种格式,我认为 .py 因为它会有一个 init 函数。再次感谢。
    • Dockerfile 被命名为“Dockerfile”。也许您应该多研究一下如何创建 dockerfile,将容器部署到 google 容器注册表,然后在 app.yaml 中使用该容器。我希望这会有所帮助,并对最终结果感到好奇!
    猜你喜欢
    • 2021-09-16
    • 2020-01-12
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    相关资源
    最近更新 更多