MapServerの調査をしています。
SWIG MapScript APIのpython版にバグがあるようです。
以下のようなコードを書くと、例外が発生します。
>>>import mapscript
>>>map = mapscript.mapObj('./x.map')
>>>layer = mapscript.layerObj(map)
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python2.7/site-packages/MapScript-6.0.2-py2.7-linux-x86_64.egg/mapscript.py", line 1381, in __init__
if args and len(args)!=0:
NameError: global name 'args' is not defined
mapscript.pyをのぞいてみると、確かに"args"という変数は未定義です。
class layerObj(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, layerObj, name, value)
__swig_getmethods__ = {}
# 略
def __init__(self, map = None):
this = _mapscript.new_layerObj(map)
try: self.this.append(this)
except: self.this = this
if 1:
if args and len(args)!=0: #'args' is not defined!
self.p_map=args[0]
else:
self.p_map=None
# 略
しょうがないので、以下のように修正し、python-mapscriptをインストールしなおしました。
class layerObj(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, layerObj, name, value)
__swig_getmethods__ = {}
# 略
def __init__(self, map = None):
this = _mapscript.new_layerObj(map)
try: self.this.append(this)
except: self.this = this
#if 1:
# if args and len(args)!=0: #'args' is not defined!
# self.p_map=args[0]
# else:
# self.p_map=None
self.p_map = map
# 略
これで一応動きました。
追記:
classObjのコンストラクターも同様に修正が必要でした。
あと、既知のバグみたいです。
MapServer Issue Tracker "MapScript classObj Error"
http://trac.osgeo.org/mapserver/ticket/3940
0 件のコメント:
コメントを投稿