【问题标题】:Make `coc-python` and `jedi` autocomplete modules installed in a virtual environment在虚拟环境中安装 `coc-python` 和 `jedi` 自动完成模块
【发布时间】:2021-05-20 12:57:38
【问题描述】:

使用通常的coc.nvim + coc-python + jedi 设置 NeoVim 应该使用系统 Python 模块来运行它自己的插件,但 Jedi 应该能够自动完成安装在活动虚拟环境中的 Python 模块。如何设置?

我已经全局安装了 NeoVim 和 pip install-ed Pylint 和 Jedi。我在 NeoVim 中安装了 coc.nvimcoc-python 没有问题。我在~/.vimrc 中有系统 Python 3 路径:

let g:python3_host_prog = '/bin/python'

以及~/coc-settings.json中的以下内容:

"python.pythonPath": "/bin/python",
"python.jediEnabled": true,
"python.jediPath": "/usr/lib/python3.9/site-packages",
"python.linting.pylintEnabled": true,
"python.linting.pylintPath": "/bin/pylint",
"python.linting.flake8Enabled": false

当我创建一个虚拟环境时,激活它,安装pygame,然后在其中运行NeoVim:

➜  python3 -m venv myenv && myenv/bin/activate
➜  pip install pygame
➜  nvim

linter 和 Python 3 提供程序都可以正常工作。然而,Jedi 完成了本地代码的成员,但不完成 pygame 的成员,除非我也在虚拟环境之外安装 pygame,即:

➜  deactivate
➜  pip install pygame
➜  myenv/bin/activate
➜  nvim

但是必须两次安装每个 Python 模块,这与使用虚拟环境的目的相去甚远。

【问题讨论】:

  • 我不明白为什么这是-1。所有标签都存在于此。我描述了这个问题,我描述了我尝试过的东西,堆栈上没有类似的问题,并且没有对建议问题的答案可以解决我的问题。为什么它被认为是一个糟糕的问题?

标签: pygame python-module python-venv neovim coc.nvim


【解决方案1】:

找到了。在coc-settings.json:

"python.pythonPath": "python",

NeoVim 必须始终使用/bin/python,但传递给 Jedi 的路径必须在 Python 3 处于活动状态时指向虚拟环境中的 Python 3,而在其不处于活动状态时必须指向 /bin/python。将 CoC 的 Python 路径设置为 pythonenv 处理它:

➜  myenv/bin/activate
➜  which python
/home/test/foobar/myenv/bin/python
➜  deactivate
➜  which python
/bin/python

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 2018-09-26
    • 2018-07-03
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多