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

问题描述 投票:0回答:1

我正在使用 Neovim 并安装了

mypy
mason
,并且我还使用
null-nvim
配置了它:

local sources = { null_ls.builtins.diagnostics.mypy }

这里,

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

例如,我激活了安装了

myenv
openai
,然后我使用Neovim打开了一个Python文件:

另一方面,如果我将

mypy
安装在
myenv
内,那么一切都会正常运行。但这种方法要求我为每个虚拟环境安装
mypy
的每个副本。通过
mason
安装时如何避免出现警告消息?


更新

例如,如果您在 virtualenv 中运行代码,请确保在 virtualenv 中安装并使用

mypy
。或者,如果您想使用全局安装的
mypy
,请设置
--python-executable
命令行标志以指向包含已安装的第三方软件包的 Python 解释器。

似乎

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

mypy neovim
1个回答
2
投票

以下是 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,
}),

上面的代码首先检测virutalenv,否则,它将使用默认的

/usr/bin/python3
作为
--python-executable

© www.soinside.com 2019 - 2024. All rights reserved.