2014-09-15 5 views
0

MayaVi2 독립 실행 형 스크립트에 대한 명령 줄 인수를 구문 분석하려고합니다. 그러나 mayavi2.standalone() 함수는 나보다 먼저 명령 줄 인수를 사용합니다. 예를 들면 :Mayavi2 독립 실행 형 스크립트 (명령 줄 인수 포함)

#! /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() 

나는 mayavi2.standalone() 도움말 메시지가 아니라 내 자신의 파서에 대한 하나를 얻을 호출이 스크립트 plot.py

$ plot.py -h 

로 실행합니다.

답변

1

mayavi2 모듈의 소스 코드에서 GitHub으로 전역 이름 공간에 코드가 있음을 알 수 있습니다. 일부 코드는 명령 행 구문 분석을 실행합니다. 파이썬 코드가 위에서 아래로 실행되기 때문에, 코드의 재정렬을 통해 문제를 해결할 수 있습니다 :

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()