我用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
答案 0 :(得分:3)
在python中导入包不一定会自动导入其下的任何子包/模块。执行import django.contrib.gis.gdal
时,在gdal目录中运行__init__.py
;这取决于该文件是否会import libgdal
,以便通过gdal
提供该文件。在这种特殊情况下,gdal
将gdal_full_version
libgdal
函数从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
或者明确指出实际定义函数的位置,你可以这样做:
{{1}}