【问题标题】:Python Cmd Tab Completion ProblemsPython Cmd 选项卡完成问题
【发布时间】:2014-01-08 19:44:15
【问题描述】:

我目前正在为我们公司开发一个应用程序。它目前围绕 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 上,选项卡完成按预期工作。当它在建筑物中的任何其他机器上运行时,它无法完成。

【问题讨论】:

  • 您能详细说明一下:“它无法完成”吗?有错误吗?
  • 没有错误 - 只是添加一个选项卡而不完成剩余的字符串。

标签: python cmd


【解决方案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 模块只能在一台工作机器上使用?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    相关资源
    最近更新 更多