首页 > 解决方案 > 使用 pip 将 gdal==2.3.3 安装到 venv 中

问题描述

我正在使用带有 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,但我找不到任何可以帮助我的信息。

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

标签: pythongcloudgdal

解决方案


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

... main .gdal_config_error: [Errno 2] 没有这样的文件或目录:'gdal-config': 'gdal-config' ...

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

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

最重要的步骤是包括:

sudo apt-get install gdal-bin python-gdal

推荐阅读