2

我刚开始将 Vim 配置为 IDE,我启动的第一个文件是碰巧使用虚拟环境的文件。

在我的 .vimrc 中,我添加了ale作为我的 lint 引擎,并添加了coc作为我的自动完成(智能感知)引擎。所以我进去了,发现有错误。我退出vim,然后source了我的虚拟环境,又进入了,还是报错。然而,出于某种原因,他们都在进口。

我试过了:

  • 在进入 vim 之前采购我的 venv
  • 放入let g:ale_virtualenv_dir_names = ['env']我的 .vimrc
  • 使用vim-virtualenv插件

我将 ale 的 linter 和 fixers 设置如下

 " ALE vars
 let g:ale_disable_lsp = 1
 let g:ale_linters = {
        \   'python': ['flake8'],
        \   'javascript': ['eslint'],
        \}
 let g:ale_fixers = {
 \   'python': ['black'],
 \}
 let g:ale_fix_on_save = 1
 let g:ale_sign_warning = '-!'
 let g:ale_virtualenv_dir_names = ['env']

但它仍然抛出错误

如何使用我的虚拟环境使其发出警告?

4

2 回答 2

2

我似乎已经修复了它。编辑:我没有修复它

在我的 .vimrc 文件中,我只需要缩进这个代码块。

let g:ale_fixers = {
     \   'python': ['black'],
     \}

它一定让 vim 和 ale 感到困惑并抛出错误,特别是因为我把它放在我的g:virtualenv_dir_names变量之前。

更新

那不是导致问题的原因

出于某种原因,这完全与我的虚拟环境有关。如果有人可以向我解释这一点,我将不胜感激。

我需要rm -dr我以前的虚拟环境,然后重新制作并重新安装它。

希望这对你们中的一些人有所帮助!

于 2020-10-29T20:07:40.813 回答
1

我将假设您正在使用Neovim(或者此解决方案也适用于Vim)但 YMMV。

==>:checkhealth provider在 neovim 中运行命令。您想查找有关 python 3 的部分:

## Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "/home/albaraa/Documents/venv_global/bin/python3"
  - INFO: Executable: /home/albaraa/Documents/venv_global/bin/python3
  - INFO: Python version: 3.8.5
  - INFO: pynvim version: 0.4.2
  - OK: Latest pynvim is installed.

==================================================== ===========================

如果它没有说OK,只需按照给出的提示进行操作:

  • 如果它找不到你的 python 版本,那么在你的 init.vim 文件中放置你的 virtualenv 的位置:
let g:python3_host_prog = '/home/albaraa/Documents/venv_global/bin/python3'
  • 如果它找到它并且您仍然收到错误,请按照提示操作。您将需要在您的虚拟环境中运行此命令:
pip install neovim pynvim

==================================================== ===========================

如果它说OK但它仍然无法正常工作:

  • 确保您在 python 虚拟环境中运行 neovim。我有一个这样的 Neovim 设置别名,以便我可以输入nvimp并让它自动执行:
alias nvimp="source ~/Documents/venv_global/bin/activate && nvim"
  • 检查是否可以访问 neovim 中的 python 虚拟环境。我认为一些旧版本有这个问题:
" This should show your virtual environment
:which python

" This should show your virtual environment in the path
:echo $PATH

" This should show your virtual environment is in the path of the neovim command shell (has to be the same as above)
:!echo $PATH
于 2020-10-31T02:08:10.443 回答