V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jeeyong
V2EX  ›  Python

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

  •  
  •   jeeyong · 2022-11-11 17:40:09 +08:00 · 3448 次点击
    这是一个创建于 750 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前的问题:
    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
    中写入如上配置:

    求指点....
    10 条回复    2022-11-12 10:19:01 +08:00
    jfcherng
        1
    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
        2
    jeeyong  
    OP
       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
        3
    jfcherng  
       2022-11-12 09:48:53 +08:00
    > 但是执行的时候依旧提示:

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

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

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

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

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

    感谢...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2681 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:26 · PVG 15:26 · LAX 23:26 · JFK 02:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.