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