python3 中多处理模块的绝地完成不正确
Incorrect jedi completitions for multiprocessing module in python3
使用 atom 的 autocomplete-python,它使用 jedi 我发现 python3
中的 multiprocessing
模块有不正确的建议。这是一个例子:
>>> import jedi
>>> source = '''
... import multiprocessing as mp
... mp.Pro'''
>>> script = jedi.Script(source, 3, len('mp.Pro'), 'example.py')
>>> script.completions()
[<Completion: process>]
模块实际上有 process
包,但它在模块范围内也有 Process
class:
>>> import multiprocessing as mp
>>> [n for n in mp.__all__ if n.endswith('rocess')]
['Process', 'current_process']
比较 python2 和 python3 的 multiprocessing
模块,我发现它们略有不同。现代版本导入默认上下文命名空间的命名空间:
globals().update((name, getattr(context._default_context, name))
for name in context._default_context.__all__)
__all__ = context._default_context.__all__
不幸的是,我不知道如何解决这个问题或解决它。你有什么建议吗?
Jedi 不理解写入 globals()。
http://jedi.readthedocs.io/en/latest/docs/features.html#unsupported-features
中明确提到了这一点
很长一段时间我什至没有考虑过实现它,现在我愿意接受它。但可能会很久。 (它不再是一个大的性能杀手。)
但是现在我认为你只需要忍受这个问题。
使用 atom 的 autocomplete-python,它使用 jedi 我发现 python3
中的 multiprocessing
模块有不正确的建议。这是一个例子:
>>> import jedi
>>> source = '''
... import multiprocessing as mp
... mp.Pro'''
>>> script = jedi.Script(source, 3, len('mp.Pro'), 'example.py')
>>> script.completions()
[<Completion: process>]
模块实际上有 process
包,但它在模块范围内也有 Process
class:
>>> import multiprocessing as mp
>>> [n for n in mp.__all__ if n.endswith('rocess')]
['Process', 'current_process']
比较 python2 和 python3 的 multiprocessing
模块,我发现它们略有不同。现代版本导入默认上下文命名空间的命名空间:
globals().update((name, getattr(context._default_context, name))
for name in context._default_context.__all__)
__all__ = context._default_context.__all__
不幸的是,我不知道如何解决这个问题或解决它。你有什么建议吗?
Jedi 不理解写入 globals()。
http://jedi.readthedocs.io/en/latest/docs/features.html#unsupported-features
中明确提到了这一点很长一段时间我什至没有考虑过实现它,现在我愿意接受它。但可能会很久。 (它不再是一个大的性能杀手。)
但是现在我认为你只需要忍受这个问题。