2

<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_parentsalright 的函数,所以肯定有一些巫术在起作用。我不是第一次遇到这些“未定义名称”问题,但我对这个问题的想法已经不多了。

已经尝试过:

  • 卸载、重新安装、升级 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'
4

1 回答 1

7

修复它: 我使用以下命令通过 pip 重新安装了最新版本的绝地:

pip3 install -e git://github.com/davidhalter/jedi.git#egg=jedi

现在,该命令import jedi不会产生任何异常,并且在 Neovim 中似乎可以正常工作。

安装的默认版本pip3 install jedi生成 ImportError 的原因超出了我的猜测。也许这个版本本身有问题,也许是我的 python 环境的一些怪癖......

编辑:根据大卫哈尔特在下面的评论中,这似乎是一个点子错误

反正。如果你和我有同样的问题,试试这个修复。

于 2020-08-10T12:50:54.083 回答