从 pipenv 中的 vim ALE 错误导入错误 运行 Pylint 和 MyPy。 -- :!pylint % 有效 -- :!mypy % 有效

False import errors running Pylint and MyPy from vim ALE in pipenv. -- :!pylint % works -- :!mypy % works

我有一个项目目录

project
    - code
        - code.py
    - tests
        - test_code.py

过去使用 virtualenv 时一切正常。我现在正在尝试 pipenv。我的 .vimrc

里有这个
"python with virtualenv support
py << EOF
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
    project_base_dir = os.environ['VIRTUAL_ENV']
    activate_this = os.path.join(project_base_dir, 'Scripts/activate_this.py')
    execfile(activate_this, dict(__file__=activate_this))
EOF

这似乎行得通。我用 :!python 获得虚拟环境 Python。我可以 运行 :!pylint:!mypy,它们都没有安装在我的全局 Python.

:!pylint tests\ 未显示导入错误,但 ALE 显示导入错误。类似的事情(甚至更糟)发生在 mypy 上。 Mypy 不仅会报告错误的导入错误(仅当 运行 通过 ALE 时),还会漏掉它通过 :!mypy tests\.

捕获的错误

我被难住了。有什么想法吗?

如果您正在为项目使用 pipenv,请尝试使用 let g:ale_python_auto_pipenv = 1。如果这对您不起作用,您可以使用 :help ale-python-options.

中的各种选项设置工具的路径

ALE 中有一个设置:

let g:ale_python_pylint_change_directory=0
let g:ale_python_flake8_change_directory=0

如果您不设置此项,ALE 将在 linting 之前进入项目子目录。