我有一个我正在为我们公司工作的应用程序。它目前围绕Python的Cmd模块构建,并具有完成许多任务的选项卡。
出于某种原因,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 :(得分:2)
检查环境变量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
模块只能在一台工作机器上使用?