RFC17:Python名称空间

作者:霍华德巴特勒

联系方式:hobu.inc@gmail.com

状态:通过

总结

Python的GDAL绑定在历史上避开了使用包和名称空间提供组织的常规Python实践。
这个RFC为Python实现了一个新的名称空间,称为 奥斯吉奥 ,此后GDAL Python绑定将驻留在其中。提供了向后兼容性,因此当前代码将继续以不变的方式运行,但是新的开发应该出于代码组织和全局命名空间污染的原因而使用命名空间。截至2007年10月1日,RFC 17中描述的更改仅适用于“下一代”Python绑定。预计这些绑定将是GDAL 1.5的默认绑定。

目标

在正确命名的Python包中提供GDAL Python绑定,消除Python全局命名空间的污染。

过去的用法

GDAL的Python绑定以前使用的全局感知Python模块:

import gdal
import osr
import ogr
import gdalconst
import gdalnumeric

新用法

RFC17现在在 奥斯吉奥 命名空间:

from osgeo import gdal
from osgeo import osr
from osgeo import ogr
from osgeo import gdalconst
from osgeo import gdal_array

此外,旧的模块样式导入将继续处理弃用警告:

>>> import gdal
/Users/hobu/svn/gdal/swig/python/gdal.py:3: DeprecationWarning: gdal.py was placed in a namespace, it is now available as osgeo.gdal
  warn('gdal.py was placed in a namespace, it is now available as osgeo.gdal', DeprecationWarning)

按照计划,我们将在未来某个时候移除特定于GDAL的全局模块。

其他Sprint更新

这个RFC的工作是由Howard Butler和Chris Barker在FOSS4G2007 GDAL代码sprint上完成的。除了Python名称空间之外,在构建GDAL绑定方面还处理了一些小问题。

  1. 下一代Python绑定现在默认使用setuptools(如果可用)。

  2. 对./swig/python目录进行了轻微的重组,将扩展构建与纯python模块分离开来。

  3. gdal2tiles,一个由PetrKlokan开发的GoogleSummer代码项目,被集成到下一代绑定中

投票历史

有声投票(我们有史以来第一次!)开始于FOSS4G2007 sprint。

  • 弗兰克·温特丹+1

  • 霍华德·巴特勒+1

  • 丹尼尔·莫里塞特+1

  • 塔马斯塞克雷斯特+1