在nvim中通过mason安装mypy时如何避免“找不到实现或库存根”

che*_*gpu 3 neovim mypy

我正在使用 Neovim 并安装mypymason并且我还使用以下方式配置它null-nvim

local sources = { null_ls.builtins.diagnostics.mypy }
Run Code Online (Sandbox Code Playgroud)

这里,mypy安装的mason,其实是安装在单独的虚拟环境下的~/.local/share/nvim/mason/packages/mypymypy如果第三方库安装在另一个环境中,似乎总是会发出警告“找不到实现或库存根”。

例如,我激活了安装myenv位置openai,然后使用 Neovim 打开了一个 Python 文件:

在此输入图像描述

另一方面,如果我安装mypy在里面myenv,那么一切正常。但这种方法要求我为每个虚拟环境安装每个副本mypy。通过安装时如何避免警告消息mason


更新

例如,如果您在 virtualenv 中运行代码,请确保mypy在 virtualenv 中安装和使用。或者,如果您想使用全局安装的mypy,请设置--python-executable命令行标志以指向包含已安装的第三方包的 Python 解释器。

似乎mypy无法检测到我当前使用的virutalenv。

che*_*gpu 5

以下是 Linux 和 macOS 中的解决方法:

nls.builtins.diagnostics.mypy.with({
    extra_args = function()
    local virtual = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX") or "/usr"
    return { "--python-executable", virtual .. "/bin/python3" }
    end,
}),
Run Code Online (Sandbox Code Playgroud)

上面的代码首先检测 virutalenv,否则,它将使用默认值/usr/bin/python3作为--python-executable.