[求教]lsp-pyright 该如何配置虚拟环境?

2022-11-11 17:40:09 +08:00
 jeeyong
目前的问题:
sublime + LSP + lsp-pyright
不能够正确找到虚拟环境中 python 解析器的路径. 使用的仍旧是默认 python.exe
所以不能够引入虚拟环境中的包.

在 lsp-pyright 自定义配置中写入了:
{
"venvPath": ".\\venv\\Scripts\\python.exe",
"venv": "venv"
}

通过打印 sys.executable, 使用的仍然是系统默认 python 解析器.

PS: 我尝试过 venvPath 路径的多种写法.
"venvPath": "./venv/Scripts/python.exe",
"venvPath": "python 的绝对路径"
问题依旧..

尝试过通过项目内的 pyrightconfig.json 配置.
或者 Preferences -> Packages settings -> LSP -> Server -> lsp-pyright
中写入如上配置:

求指点....
3120 次点击
所在节点    Python
10 条回复
jfcherng
2022-11-11 20:23:55 +08:00
老實說,我覺得你不需要做任何事情。

不過如果一定要手動的話,根據 readme https://github.com/sublimelsp/LSP-pyright#virtual-environments
{
"venvPath": ".",
"venv": "venv"
}

-------

> 通过打印 sys.executable, 使用的仍然是系统默认 python 解析器.

不知道你是怎麼辦到這件事情的
jeeyong
2022-11-12 09:44:03 +08:00
@jfcherng

1. 0 配置的情况下, 同样不能够识别到环境中的包. 提示
ModuleNotFoundError: No module named 'numpy'

2. 通过在项目配置 pyrightconfig.json 文件, 内容为:
{
"venvPath": ".",
"venv": "venv"
}

https://imgur.com/dJa6WW5

在 sublime 的启动控制台可以看到, LSP-pyright 识别到了虚拟环境中 python 解析器的路径.
但是执行的时候依旧提示:
ModuleNotFoundError: No module named 'numpy'

3. 通过引入 sys 包, 查看当前 python 解析器的路径, 发现使用的是系统默认路径的 python 解析器.
如果使用 virtualenv:Activate, 就会变成虚拟环境的解析器路径.
引入包也正常.. 但是如果可以让 sublime+pyright 正确识别虚拟环境, 就完美了..
jfcherng
2022-11-12 09:48:53 +08:00
> 但是执行的时候依旧提示:

這個跟 pyright 沒有任何關聯啊...
jeeyong
2022-11-12 09:56:59 +08:00
@jfcherng
虚拟环境内是有 numpy 包, 通过 activate 激活环境或者 virtualenv:Activate, 再运行是可以的..

LSP-pyright 是支持虚拟环境的吧?
jfcherng
2022-11-12 10:00:34 +08:00
> LSP-pyright 是支持虚拟环境的吧?

支持啊,你圖中不就寫了用了哪個 python.exe 。
但腳本運行和 pyright 沒半點關係。
jfcherng
2022-11-12 10:02:18 +08:00
所以我最一開始才會有疑問

> > 通过打印 sys.executable, 使用的仍然是系统默认 python 解析器.
>
> 不知道你是怎麼辦到這件事情的

因為你跑 ST 的 build, pyright 並不參與, 但你卻說用了打印 sys.executable 獲取到了 pyright 所使用的解析器
jeeyong
2022-11-12 10:05:13 +08:00
@jfcherng
我的理解是...
pyright 识别到了虚拟环境中的解析器..
所以在执行脚本的时候, 是能够引用虚拟环境内安装的包, 不是这样的么?
jfcherng
2022-11-12 10:05:34 +08:00
如果 pyright 不支持 venv, 你將看見
jeeyong
2022-11-12 10:05:45 +08:00
@jfcherng 还是说, 依旧需要使用 virtualenv 这类插件去激活虚拟环境..
jeeyong
2022-11-12 10:19:01 +08:00
@jfcherng 理解了...
pyright 负责代码提示和检查...
环境激活, 脚本执行的问题是另外的问题..
我理解你说的
> 但腳本運行和 pyright 沒半點關係。

感谢...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/894542

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX