我正在使用 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 解释器。--python-executable
似乎
mypy
无法检测到我当前使用的virutalenv。
以下是 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
。