安装Python的GDAL遇到问题

14

首先,我要说我已经搜索了有关这个问题的帮助,并阅读了我找到的众多线程,但没有一个能够解决它,或者我不能理解他们在说什么。

其中一个线程在这里:Python GDAL package missing header file when installing via pip

我能够运行

pip install --no-install GDAL

但是后来我被指示要"cd到ENV/build/GDAL"。我知道cd的意思,但我不知道/ENV/build/GDAL目录在哪里,而且文章中也没有更多关于它的信息,或者参考文章中也没有。

核心问题就是我想安装GDAL以便在Python中使用。我尝试了pip install GDAL,但它失败并输出了以下内容:

    Collecting GDAL
  Using cached GDAL-2.0.1.tar.gz
Installing collected packages: GDAL
  Running setup.py install for GDAL
    Complete output from command c:\users\isaac\appdata\local\programs\python\python35-32\python.exe -c "import setuptools, tokenize;__file__='C:\\Users\\Isaac\\AppData\\Local\\Temp\\pip-build-4kmkv1_4\\GDAL\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record C:\Users\Isaac\AppData\Local\Temp\pip-fxko2gfx-record\install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build\lib.win32-3.5
    copying gdal.py -> build\lib.win32-3.5
    copying ogr.py -> build\lib.win32-3.5
    copying osr.py -> build\lib.win32-3.5
    copying gdalconst.py -> build\lib.win32-3.5
    creating build\lib.win32-3.5\osgeo
    copying osgeo\gdal.py -> build\lib.win32-3.5\osgeo
    copying osgeo\gdalconst.py -> build\lib.win32-3.5\osgeo
    copying osgeo\gdalnumeric.py -> build\lib.win32-3.5\osgeo
    copying osgeo\gdal_array.py -> build\lib.win32-3.5\osgeo
    copying osgeo\ogr.py -> build\lib.win32-3.5\osgeo
    copying osgeo\osr.py -> build\lib.win32-3.5\osgeo
    copying osgeo\__init__.py -> build\lib.win32-3.5\osgeo
    Fixing build\lib.win32-3.5\gdal.py build\lib.win32-3.5\ogr.py build\lib.win32-3.5\osr.py build\lib.win32-3.5\gdalconst.py build\lib.win32-3.5\osgeo\gdal.py build\lib.win32-3.5\osgeo\gdalconst.py build\lib.win32-3.5\osgeo\gdalnumeric.py build\lib.win32-3.5\osgeo\gdal_array.py build\lib.win32-3.5\osgeo\ogr.py build\lib.win32-3.5\osgeo\osr.py build\lib.win32-3.5\osgeo\__init__.py
    Skipping optional fixer: ws_comma
    Fixing build\lib.win32-3.5\gdal.py build\lib.win32-3.5\ogr.py build\lib.win32-3.5\osr.py build\lib.win32-3.5\gdalconst.py build\lib.win32-3.5\osgeo\gdal.py build\lib.win32-3.5\osgeo\gdalconst.py build\lib.win32-3.5\osgeo\gdalnumeric.py build\lib.win32-3.5\osgeo\gdal_array.py build\lib.win32-3.5\osgeo\ogr.py build\lib.win32-3.5\osgeo\osr.py build\lib.win32-3.5\osgeo\__init__.py
    Skipping optional fixer: ws_comma
    running build_ext
    building 'osgeo._gdal' extension
    error: [WinError 2] The system cannot find the file specified

Command "c:\users\isaac\appdata\local\programs\python\python35-32\python.exe -c "import setuptools, tokenize;__file__='C:\\Users\\Isaac\\AppData\\Local\\Temp\\pip-build-07o7k41s\\gdal\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record C:\Users\Isaac\AppData\Local\Temp\pip-640gw1ah-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\Isaac\AppData\Local\Temp\pip-build-07o7k41s\gdal

有人可以帮我解决这个问题吗?我完全迷失了,不知道该怎么处理。

我想知道这是否是因为我的Python安装位置很奇怪?它安装在C:\ Users \ Isaac \ AppData \ Local \ Programs \ Python \ Python35-32 \中,这是我安装PyCharm时放置的位置,但该文件夹及其内部的/Scripts/文件夹都在我的PATH中。

编辑:经过更多研究,我想知道是否因为我正在使用Python 3.5?我将尝试回滚到Python 3.4,看看是否有任何变化。

编辑2:没有,还是没有运气,它仍然失败并告诉我

error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)

我尝试安装Microsoft Visual C++ 10.0,但它告诉我我的计算机上已经有更新版本了。


请参考此 Stack Overflow 问题:https://dev59.com/HG025IYBdhLWcg3wblc3 - aliasm2k
我尝试运行了一遍,但似乎没有起作用。明天我会再试一次,希望那时头脑更清醒。 - wfgeo
4个回答

17

安装此类库可能最简单的方法是使用 conda。以用户身份而不是root,获取并安装 Miniconda。现在,创建一个新环境并将 gdal 安装到其中:

conda create -n gdal_test python=3.5
activate gdal_test
conda install gdal

您需要留在此命令行窗口中。即提示符应如下所示:(gdal_test)。启动Python:

python
>>> import gdal

注意: 在Linux和Mac OS X上使用source activate gdal_test

要查看可用的gdal版本,请输入:

conda search gdal

这样的输出:
gdal

      ....

               2.0.0               np110py34_0  defaults

意味着 gdal 2.0.0 可用于 Python 3.4,需要 NumPy 1.10。


安装完gdal后,您可能需要conda upgrade numpy。在我的Windows安装中,它降级了numpy。 - user1269942
@user1269942 当您创建新环境时,不应出现降级,因为该环境尚未安装NumPy。 - Mike Müller
好的,我明白了...很酷。我想无论如何我都安装了sklearn/numpy等。环境...听起来很不错,可以让其他人重现你的结果。 - user1269942
所以在这个输出中(http://pastebin.com/KvZpDg1i),我假设第二列是指它可用的Python版本的指示器?那么我要么必须回滚到Python 3.3,要么回滚到Python 3.4和numpy 1.8?非常感谢您的帮助。 - wfgeo
1
这一行 2.0.0 np110py34_0 defaults 表示你可以使用 Python 3.4 conda create -n gdal_test python=3.4,并自动安装 NumPy 1.10 和 gdal 2.0.0. - Mike Müller
显示剩余4条评论

6
在Windows上安装GDAL的最简单方法是使用预构建的二进制文件,除非您有特殊需求需要从源代码构建GDAL。除了 @Mike Müller提到的conda之外,有三种常见的GDAL Windows二进制文件(具有Python绑定)来源:

使用来自 Gohlke Pythonlibspip install GDAL-2.2.4-cp36-cp36m-win_amd64.whlPython 3.6.5 上成功了。谢谢 :D - cfrostte
@emi 我正在使用Python 3.6.5 64位版本,但无法安装GDAL。你能详细说明一下你所采取的步骤吗? - akinuri
@akinuri 我在 Windows 10 的 cmd 下运行了 pip install GDAL-2.2.4-cp36-cp36m-win_amd64.whl。当然,你需要先下载 .whl 文件,并确保你的路径与 .whl 相同;你可以从这个链接下载该文件。你遇到了什么错误? - cfrostte
@emi 请查看我的问题。虽然我成功安装了GDAL,但我无法使用gdal_translate。我收到了一个错误,说“模块无法加载”(可能是缺少dll:ogr_FileGDB)。 - akinuri
@akinuri 抱歉,我不知道你的代码出了什么问题;我没有使用GDAL的经验。我只是执行了一个复制和粘贴的代码,并且它成功地执行了。也许你正在尝试执行旧代码?也许你在代码执行中没有使用gdal_translate库? - cfrostte
@emi 发布了另一个关于我的实际问题的问题。我可能会彻底放弃 GDAL :) - akinuri

1
要在Windows上安装GDAL,您需要按照以下步骤进行:-
  1. 您需要使用链接https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal安装GDAL wheel文件。访问此链接后,下载名为"GDAL‑3.0.4‑cp37‑cp37m‑win32.whl"的文件,因为它对我有效,然后使用命令"pip install c:\Users........\GDAL‑3.0.4‑cp37‑cp37m‑win32.whl"成功安装GDAL,这是Geopandas的要求。

注意:如果上述wheel文件对您无效,请尝试使用其他wheel文件。


0
这对我起作用了(对于我的Windows 7): 从以下链接下载GDAL的wheel文件(它支持Python 3.8)。

http://pypi.naturalcapitalproject.org/simple/gdal/index.html

我下载了适用于安装在 Windows 64 位的 Python 3.7 的轮文件 (GDAL-3.0.4-cp37-cp37m-win_amd64.whl)。

前往 Python 文件夹的脚本文件夹并安装轮文件:

pip install GDAL-3.0.4-cp37-cp37m-win_amd64.whl

如果下载的轮文件在特定文件夹中,请将路径添加到 pip 命令中,例如:

pip install c:/users/myaccount/desktop/GDAL-3.0.4-cp37-cp37m-win_amd64.whl

最后,不要更改已下载的轮文件的名称。


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