SublimeText3 Jedi autocomplete plugin 无法识别 virtualenv Python



我已经在Sublime Text 3 v3.1.1上安装并配置了Jedi自动完成v0.12.0。在 Jedi 用户设置中,我已将python_interpreter设置为指向virtualenvs中的 python 版本。

"python_interpreter": "/home/username/.virtualenvs/cv3/bin/python"

问题是在/dependencies/jedi/api/environment.py中,方法_assert_safe不承认虚拟环境路径是安全的。

def _assert_safe(executable_path, safe):
if safe and not _is_safe(executable_path):
raise InvalidPythonEnvironment(
"The python binary is potentially unsafe.")

_assert_safe方法调用同样返回 false 的方法def _is_safe(executable_path)。这两种方法中的代码非常简单,我了解正在发生的事情,只是看不到任何解决方案。出于测试目的,我将virtualenvPython 路径添加到PYTHONPATH环境变量中,这没有任何区别。

我能找到的唯一解决方案是从virtualenv下的终端启动Sublime。在终端中:

$ workon virtualenv_name
$ subl

现在_is_safe(executable_path)方法可以找到virtualenvPython 可执行文件并返回True

Jedi 检查口译员是否安全。虽然使用任何你想要的环境是完全合理的,但有时很难争论它是否安全。当你使用Jedi时,你可以只使用create_environment(path, safe=False),但显然这个崇高的插件不允许这样做(但也许应该?

IMO更好的解决方案是创建venv而不是virtualenvs。这些在Jedi中效果更好,因为它们没有复制整个Python二进制文件(无论如何这没有多大意义(。我不是100%确定这对你有帮助,但它可能会帮助其他人。

最新更新