2014-01-08 50 views
0

我有一個應用程序,我目前正在爲我們公司工作。它目前是圍繞Python的Cmd模塊構建的,並且爲許多任務提供了tab完成功能。Python Cmd Tab完成問題

但是,由於某些原因,Tab完成功能目前僅適用於大樓中的一臺計算機 - 從其他計算機運行腳本不允許完成製表符。

這裏是有問題的部分代碼:

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

可能(的某些部分),這是隻在一個工作機器得當?

也許readline模塊僅在一臺工作機器上可用?

+0

啊哈。是的,看起來是這樣。現在修好了 - 歡呼聲。 – user3172891