0

我收到 Django 的这个错误:

>>> import django.contrib.gis.gdal
>>> print django.contrib.gis.gdal.libgdal.gdal_full_version()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'module' object has no attribute 'libgdal'

但我有这个:

$ locate libgdal

/usr/local/lib/python2.7/site-packages/django/contrib/gis/gdal/libgdal.py
/usr/local/lib/python2.7/site-packages/django/contrib/gis/gdal/libgdal.pyc
/usr/local/lib/python2.7/site-packages/django/contrib/gis/gdal/libgdal.pyo
4

1 回答 1

3

在 python 中导入包不一定会自动导入其下的任何子包/模块。当你这样做import django.contrib.gis.gdal时,它__init__.py会在 gdal 目录中运行;这取决于该文件是否import libgdal可以通过gdal. 在这种特殊情况下,gdal导入(以及其他)gdal_full_versionlibgdal自身开始起作用,但不是libgdal作为一个整体,所以你可以这样做:

>>> import django.contrib.gis.gdal
>>> print django.contrib.gis.gdal.gdal_full_version()
GDAL 1.6.3, released 2009/11/19

或者要明确说明函数的实际定义位置,您可以执行以下操作:

>>> import django.contrib.gis.gdal.libgdal
>>> print django.contrib.gis.gdal.libgdal.gdal_full_version()
GDAL 1.6.3, released 2009/11/19
于 2012-12-01T10:30:15.023 回答