2014-01-08 2 views
0

저는 현재 저희 회사에서 일하고있는 응용 프로그램을 가지고 있습니다. 현재 Python의 Cmd 모듈을 기반으로 구축되었으며 다양한 작업을 위해 탭 완성 기능이 있습니다.Python Cmd 탭 완성 문제

그러나 어떤 이유로 인해 탭 완성은 현재 건물의 한 컴퓨터에서만 작동합니다. 다른 컴퓨터에서 스크립트를 실행해도 탭 완성이 허용되지 않습니다.

def populate_jobs_list(): 
    global avail_jobs 
    avail_jobs = os.walk(rootDir()).next()[1] 
    print avail_jobs 

...

def complete_job(self, text, line, start_index, end_index): 
global avail_jobs 
populate_jobs_list() 
if text: 
    return [ 
     jobs for jobs in avail_jobs 
     if jobs.startswith(text) 
    ] 
else: 
    return avail_jobs 

def do_job(self, args): 
    pass 
    split_args = args.rsplit() 
    os.environ['JOB'] = args 
    job_dir = os.path.join(rootDir(), os.getenv('JOB')) 
    os.environ['JOB_PROPS'] = (job_dir + '\\job_format.opm') 
    if not os.path.isdir(job_dir): 
     print 'Job does not exist. Try again.' 
     return 
    else: 
     print('Jobbed into: ' + os.getenv('JOB')) 
     return 

populate_jobs_list() 
prompt = outPrompt() 
prompt.prompt = '\> ' 
prompt.cmdloop('Loading...') 

나는 여기에 뭔가를 분명 실종 :

여기서 문제가되는 코드 부분입니까? 명확하게하기 위해, 시스템 A에서 탭 완성은 의도 한대로 작동합니다. 건물 내 다른 기계에서 실행될 때 완료되지 않습니다.

+0

"완료하지 못했습니다"에 대해 자세히 설명해 주시겠습니까? 오류가 있습니까? – bpgergo

+0

오류 없음 - 나머지 문자열을 완성하지 않고 탭에 추가하기 만하면됩니다. – user3172891

답변

1

환경 변수 PYTHONSTARTUP이 올바르게 설정되어 있는지 확인하십시오. 어쩌면

try: 
    import readline 
except ImportError: 
    sys.stdout.write("No readline module found, no tab completion available.\n") 
else: 
    import rlcompleter 
    readline.parse_and_bind('tab: complete') 

(의 일부)이 단지 기계를 작동 하나 제대로 수행 : 그것은 결국이 같은 STH을 할 필요가 스크립트를 가리켜 야?

아마도 readline 모듈은 하나의 작업 기계에서만 사용할 수 있습니까?

+0

아하. 네, 그런 경우가 있습니다. 고쳐 졌어 - 환호. – user3172891