带有命令行参数的Mayavi2独立脚本



我正在尝试将命令行参数解析为MayaVi2独立脚本。然而,mayavi2.standalone()函数会在我之前吃掉命令行参数。例如:

#! /usr/bin/python
import sys, argparse
from mayavi.scripts import mayavi2
from mayavi import mlab
@mayavi2.standalone
def view():
    mayavi.new_scene()
    mlab.test_plot3d()

def parseCmdLineArgs():
    parser = argparse.ArgumentParser(description='Simple plotting using MayaVi2')
    parser.add_argument('--scale', dest='scale', action='store',help='Sets the axis scaling')
    parser.set_defaults(scale=1.0)
    args = parser.parse_args(sys.argv[1:])
    return args
if __name__ == '__main__':
    args=parseCmdLineArgs()
    print "Scale=%g" % args.scale
    view()

如果调用此脚本plot.py并将其作为运行

$ plot.py -h

我得到的是mayavi2.standalone()帮助消息,而不是我自己的解析器。

从GitHub的mayavi2模块的源代码中可以观察到,它在全局名称空间中有代码。部分代码将执行命令行解析。由于Python代码是从上到下运行的,因此可以通过重新排序代码来解决问题:

import sys, argparse
def parseCmdLineArgs():
    parser = argparse.ArgumentParser(description='Simple plotting using MayaVi2')
    parser.add_argument('--scale', dest='scale', action='store',help='Sets the axis scaling')
    parser.set_defaults(scale=1.0)
    args = parser.parse_args(sys.argv[1:])
    return args
if __name__ == '__main__':
    args=parseCmdLineArgs()
from mayavi.scripts import mayavi2
from mayavi import mlab
@mayavi2.standalone
def view():
    mayavi.new_scene()
    mlab.test_plot3d()

if __name__ == '__main__':
    print "Scale=%g" % args.scale
    view()

相关内容

  • 没有找到相关文章

最新更新