【问题标题】:Mayavi2 standalone script with command line arguments带有命令行参数的 Mayavi2 独立脚本
【发布时间】:2014-09-15 06:20:09
【问题描述】:

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

【问题讨论】:

    标签: python enthought mayavi


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 2010-12-12
      • 2018-12-22
      • 1970-01-01
      相关资源
      最近更新 更多