如何在Neovim中为pylsp安装配置非默认Python版本
解决Neovim中pylsp使用指定Python3.7版本的问题
核心原因
你之前用PYTHONPATH启动Neovim的方法无效,因为PYTHONPATH仅控制Python模块的搜索路径,不会改变Neovim调用的Python解释器版本。:LspInstall默认会调用系统默认Python(3.5)安装pylsp,所以最终运行的还是旧版本环境的pylsp。
解决方法
方法1:手动在Python3.7环境安装pylsp并指定路径
- 找到Python3.7的可执行文件路径(比如
/usr/bin/python3.7),执行以下命令安装pylsp:/usr/bin/python3.7 -m pip install python-lsp-server - 查找pylsp的可执行路径:
示例输出如果是/usr/bin/python3.7 -m pip show python-lsp-server | grep LocationLocation: /usr/lib/python3.7/site-packages,则pylsp路径为/usr/lib/python3.7/site-packages/bin/pylsp - 在Neovim的LSP配置文件(如
init.lua)中指定该pylsp路径:require('lspconfig').pylsp.setup({ cmd = { "/usr/lib/python3.7/site-packages/bin/pylsp" }, -- 保留你的其他LSP配置项 })
方法2:用虚拟环境隔离(更推荐)
虚拟环境能彻底隔离项目依赖,避免版本冲突:
- 创建Python3.7虚拟环境:
/usr/bin/python3.7 -m venv ~/py37-venv - 激活环境并安装pylsp:
source ~/py37-venv/bin/activate pip install python-lsp-server deactivate - 配置Neovim使用虚拟环境中的pylsp:
require('lspconfig').pylsp.setup({ cmd = { "~/py37-venv/bin/pylsp" }, -- 可选:指定LSP使用的Python解释器路径 settings = { pylsp = { python = { pythonPath = "~/py37-venv/bin/python" } } } })
注意事项
- 不要使用
:LspInstall再安装pylsp,否则会覆盖为系统默认Python版本的实例 - 确保配置文件路径正确,若路径包含特殊字符或波浪号,可写绝对路径(如
/home/你的用户名/py37-venv/bin/pylsp)
内容的提问来源于stack exchange,提问作者vekarpov
相关产品推荐
相关产品推荐

