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

时间:2014-09-15 06:20:09

标签: python enthought mayavi

我正在尝试将命令行参数解析为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()帮助消息,而不是我自己的解析器。

1 个答案:

答案 0 :(得分:1)

GitHubmayavi2模块的源代码中可以看出,它在全局名称空间中有代码。一些代码将执行命令行解析。由于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()