<TL;DR>
在 python 3.6.8 中运行import jedi
时,我收到以下导入错误(请参阅帖子末尾的完整回溯):
...
from jedi.common import traverse_parents
ImportError: cannot import name 'traverse_parents'
</TL;DR>
我签到了~/.local/lib/python3.6/site-packages/jedi/common.py
:有一个名为traverse_parents
alright 的函数,所以肯定有一些巫术在起作用。我不是第一次遇到这些“未定义名称”问题,但我对这个问题的想法已经不多了。
已经尝试过:
- 卸载、重新安装、升级 pip3 的“jedi”包
- 对于名字中带有“jedi”的其他几个包来说,几乎是同样的爵士乐
- 将 pip3 升级到 20.2.1 并重做相同的重新安装程序
- 为 python2 安装绝地,因为为什么不(嘿,它在 python2 中工作正常,但谁在乎)
- 还尝试从 apt-get 安装 python-jedi(后来我将其删除)
- 对古代巴比伦恶魔的咒语(无济于事,他们周日不工作)
关于如何修复它的模糊线索:
- 从 github 获取最新版本的 jedi 并以某种方式安装它而不会弄得一团糟(机会很大)
- 卸载绝地并从 Neovim 中重新安装它(嘿,这可能会达到上一点)
我已经在网上搜索了这个问题的答案,但我一无所获。有没有人经历过类似的事情并设法解决它?
欢迎任何建议。
完整的追溯:
Error detected while processing function provider#python3#Call:
line 18:
Error invoking 'python_execute' on channel 5 (python3-script-host):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/vee/.local/lib/python3.6/site-packages/jedi/__init__.py", line 32, in <module>
from jedi.api import Script, Interpreter, set_debug_funcion, \
File "/home/vee/.local/lib/python3.6/site-packages/jedi/api/__init__.py", line 24, in <module>
from jedi.api import classes
File "/home/vee/.local/lib/python3.6/site-packages/jedi/api/classes.py", line 26, in <module>
from jedi.inference import imports
File "/home/vee/.local/lib/python3.6/site-packages/jedi/inference/__init__.py", line 70, in <module>
from jedi.inference import imports
File "/home/vee/.local/lib/python3.6/site-packages/jedi/inference/imports.py", line 24, in <module>
from jedi.inference import sys_path
File "/home/vee/.local/lib/python3.6/site-packages/jedi/inference/sys_path.py", line 8, in <module>
from jedi.common import traverse_parents
ImportError: cannot import name 'traverse_parents'