SublimeText3 Jedi 自动完成插件无法识别 virtualenv Python 路径
SublimeText3 Jedi autocomplete plugin does not recognize virtualenv Python path
我已经在 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
无法将 virtualenv 路径识别为安全的。
def _assert_safe(executable_path, safe):
if safe and not _is_safe(executable_path):
raise InvalidPythonEnvironment(
"The python binary is potentially unsafe.")
_assert_safe
方法调用的方法 def _is_safe(executable_path)
也 returns false。这两种方法中的代码非常简单,我明白发生了什么,只是看不到任何解决方案。出于测试目的,我将 virtualenv
Python 路径添加到 PYTHONPATH
环境变量,它没有任何区别。
我能找到的唯一解决方案是从 virtualenv
下的终端启动 Sublime
。在终端中:
$ workon virtualenv_name
$ subl
现在 _is_safe(executable_path)
方法可以找到 virtualenv
Python 可执行文件和 returns True
.
Jedi 检查口译员是否安全。虽然您可以使用任何您想要的环境是完全合理的,但有时很难争论它是否安全。你可以在使用 Jedi 时只使用 create_environment(path, safe=False)
,但显然这个 sublime 插件不允许这样做(但也许应该?)。
IMO 更好的解决方案是创建 venv 而不是 virtualenvs。这些与 Jedi 一起工作得更好,因为它们没有复制整个 Python 二进制文件(无论如何这没有多大意义)。我不是 100% 确定这对你有帮助,但它可能对其他一些人有帮助。
我已经在 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
无法将 virtualenv 路径识别为安全的。
def _assert_safe(executable_path, safe):
if safe and not _is_safe(executable_path):
raise InvalidPythonEnvironment(
"The python binary is potentially unsafe.")
_assert_safe
方法调用的方法 def _is_safe(executable_path)
也 returns false。这两种方法中的代码非常简单,我明白发生了什么,只是看不到任何解决方案。出于测试目的,我将 virtualenv
Python 路径添加到 PYTHONPATH
环境变量,它没有任何区别。
我能找到的唯一解决方案是从 virtualenv
下的终端启动 Sublime
。在终端中:
$ workon virtualenv_name
$ subl
现在 _is_safe(executable_path)
方法可以找到 virtualenv
Python 可执行文件和 returns True
.
Jedi 检查口译员是否安全。虽然您可以使用任何您想要的环境是完全合理的,但有时很难争论它是否安全。你可以在使用 Jedi 时只使用 create_environment(path, safe=False)
,但显然这个 sublime 插件不允许这样做(但也许应该?)。
IMO 更好的解决方案是创建 venv 而不是 virtualenvs。这些与 Jedi 一起工作得更好,因为它们没有复制整个 Python 二进制文件(无论如何这没有多大意义)。我不是 100% 确定这对你有帮助,但它可能对其他一些人有帮助。