Vim下Python(Poetry)环境的设置

近期迁移到了 Neovim 。在 Pyright 的加持下,vim的代码补全和错误校验功能已经很接近 IDE 了。在未正确配置 Python 环境的情况下打开 Python 项目,项目里一堆的告警让人很不舒服。

在 vim 中编辑 Python,重要的是 PYTHONPATH 的设置。正确设置 PYTHONPATH 后,Pyright 可以正确的查找到相关的依赖库。我目前的解决方案是使用 direnv

编辑 direnv 通用配置,添加 poetry 初始化函数。

vim $HOME/.direnvrc
layout_poetry() {
  if [[ ! -f pyproject.toml ]]; then
    log_error 'No pyproject.toml found.  Use `poetry new` or `poetry init` to create one first.'
    exit 2
  fi

  local VENV=$(dirname $(poetry run which python))
  export VIRTUAL_ENV=$(echo "$VENV" | rev | cut -d'/' -f2- | rev)
  export POETRY_ACTIVE=1
  PATH_add "$VENV"
}

在 python 项目中添加 direnv 设置

vim .envrc
# 进入 Poetry 环境
layout_poetry
# 设置 PYTHONPATH
export PYTHONPATH="`pwd`/vendor/Model1:`pwd`/vendor/Model2"

在设置好 direnv 后,在 CLI 下进入目录时将设置好环境变量。CLI 下进入对应的项目目录,然后启动 vim/neovim ,Pyright即可正确的找到相关依赖。

参考: