无法安装Python和GDAL(DLL加载失败)

18

我正在尝试在我的Windows 7工作站上安装GDAL和Python。

  • Python版本:2.6.6
  • GDAL版本:1.8
  • (使用Visual C++ Studio 2010 Express)

我按照http://ucsb.pbworks.com/w/page/1936549/Using-GDAL-with-Python的说明添加了PYTHONPATH和GDAL_DATA到系统环境变量。此外,我通过添加GDAL二进制文件夹来修改了我的PATH变量。

我从以下网址下载了GDAL Python绑定库:http://vbkto.dyndns.org/sdk/PackageList.aspx?file=release-1600-gdal-1-8-mapserver-5-6.zip

"from osgeo import gdal" 导致了以下错误消息:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    from osgeo import gdal
  File "C:\Python26\lib\site-packages\osgeo\__init__.py", line 21, in <module>
    _gdal = swig_import_helper()
  File "C:\Python26\lib\site-packages\osgeo\__init__.py", line 17, in swig_import_helper
    _mod = imp.load_module('_gdal', fp, pathname, description)
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.

提前感谢,Martwig


你确定那些 gdal 的 Python 绑定是使用与你的 Python 二进制文件相同版本和编译器构建的吗?(gdal 的 Python 绑定基于 SWIG,因此它们是编译的 C 扩展,而不仅仅是 Python 源文件)。另外,你安装的 gdal 是否来自你提到的 gdal Python 绑定的相同来源? - Joe Kington
我从http://www.python.org/download/releases/2.6.6/下载了Python。是的,我也从同一来源获取了gdal。gdal和绑定都是使用Visual Studio 2010编译的,但我没有找到Python 2.6.6是使用哪个编译器构建的... - Mario
1
我通过安装从 http://vbkto.dyndns.org/sdk/ 下载的 MSVC2008 编译版本的 gdal 和 gdal-python 绑定来解决了问题。此外,我还需要在我的环境变量中去掉反斜杠("c:/Program Files/GDAL" 而不是 "c:/Program Files/GDAL/")。 - Mario
在我的情况下,最好的解决方案是从WINDOWS切换到Linux。因为我长时间与这个问题斗争,而且我发现了其他相关问题。与其浪费时间,转换操作系统会更加高效。 - Yerkebulan Duisebay
7个回答

20
为了在Windows 7中成功地从python加载GDAL,我按照以下步骤进行操作,这些步骤应该是通用的:
  1. 安装您选择的python版本,我使用的是从官方网站下载的v2.7.2 x64版本
  2. 从命令行中运行python以确定用于构建python的编译器版本(我的显示此消息:Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32
  3. 从此链接下载相应的SDK:http://www.gisinternals.com/release.php。选择适合您的python的正确软件包(如果使用上述配置,则应选择MSVC2008 x64 release链接)。
  4. 从子页面下载以下内容:
    • GDAL核心组件
    • Python绑定
  5. 安装GDAL核心组件,将安装目录添加到路径,并添加新的环境变量'GDAL_DATA'指向GDAL安装的数据子目录。
  6. 安装python绑定
  7. 现在你可以使用它们啦 :)

7
没问题,它的效果非常好!基本上,非常重要的是,匹配Python编译器版本、Python绑定和GDAL核心包。在我这种情况下,我下载了1600版本的Python绑定和GDAL核心包,因为它们当时是最新的(08/2014)。然而,我的Python编译版本是1500。此外,我还搞混了体系结构:我的笔记本电脑是64位机器,但我的Python版本是32位的。因此,我不得不找到适用于Win 32位体系结构和编译版本1500的Python绑定包和GDAL核心包。两个东西都需要。希望这有所帮助! :-) - Irene
1
@iamgin 提出了很好的观点。此外,据我所知,至少有三个(也许更多?)环境变量需要注意:PATH;C:\Program Files (x86)\GDAL),GDAL_DATAC:\Program Files (x86)\GDAL\gdal-data)和 GDAL_DRIVER_PATHC:\Program Files (x86)\GDAL\gdalplugins)。这些值可能因为你使用的Windows版本以及在安装GDAL时是否更改了任何设置而不同,所以在继续之前,请确保这些磁盘地址是有效的。 - elrobis
1
dyndns.org的链接已经失效了,该网站已经迁移到gisinternals.com - Tom Bombadil
修复了答案中的链接。 - avee
你如何知道选择哪个版本?有1500、1600、1700等等。但是Python的版本中没有任何指示应该选择哪个版本。 - Valachio
你是否通过在命令行中执行“python”来检查你的Python构建版本?请阅读第2步。话虽如此,我已经有一段时间没有使用Windows了,所以情况可能已经发生了变化。 - avee

10

逐步操作非常好。但是我遇到了同样的问题。

这是因为我的 PATH 变量中有其他路径,其中使用了同名的 dll。如果您将 c:\program files\gdal 放在 PATH 中的其他路径之前,它就可以正常工作!


这对我也起作用,在遵循这里的说明http://www.gis.usu.edu/~chrisg/python/2009/docs/gdal_win.pdf后,在Windows XP上。 - Sideshow Bob
使用Python 2.7和gisinternals.com提供的GDAL 9.1 + Python绑定,在win7x32上工作。 - csparpa

4

3

Python 3.4、V.1600、Windows 10的解决方案

请确保您当前使用的是Python 3.4版本。

python -v
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct  6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32

在这里,您可以看到它是v.1600和32位。然后,前往此处

并下载:

  1. gdal-201-1600-core.msi
  2. GDAL-2.1.0.win32-py3.4.msi
  3. 安装这些msi文件

a. 然后确保您没有将OSGEO4W安装在任何地方(如果已经安装了,请完全删除该文件夹)。

b. 编辑您的环境变量,并包括PATH:C:\Program Files (x86)\GDAL;(在开头包括!)

c. 重新启动您的python/virtualenv和IDE。

此时您应该可以使所有内容正常工作

还有适用于Python 2.7、3.3、3.1的绑定,其他版本请参见此处


2

0
我发现我需要将环境变量PATH、GDAL_DATA和GDAL_DRIVER_PATH(这三个变量)添加到系统变量而不是用户变量中,以便于“你的用户名”使用。

0

尝试这个:

  • 将GDAL核心文件夹路径添加到PYTHONPATH变量中
  • 如果在Eclipse中使用PyDev,请使用PyDev解释器部分强制全局PATH变量包含它。您也可以在此处设置PYTHONPATH。

我在做了这个之后摆脱了这个错误。有趣的是,在Python交互式shell中调用抛出导入异常的那行代码之前是可以工作的。也许我们都在使用PyDev。


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