月度归档:2023年10月

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即可正确的找到相关依赖。

参考:

从Vim切换到Neovim

vim作者的离世,让vim的后续发展存在很大的不确定性。加上现在用的vim配置一直有些小问题,其中一些插件的活跃度不够,bug一直无法修复。

近期花了些时间把neovim配置好,从vim切换到neovim。

配置文件: https://github.com/vicalloy/dotfiles/blob/master/.config/nvim/init.lua

  1. 没有使用别人配置好的环境,完全自行配置。
    • 之前也热衷于使用流行的集成配置。实际下来发现不管多受欢迎的配置都会有些不符合自己喜欢的地方。而且一旦遇到问题,很难定位问题。而且现在的插件管理机制已经很完善了,自行配置的门槛低了很多。
    • 不少优秀的vim插件都转由lua实现,只能在Neovim中使用。
  2. GUI界面用的 Neovide 。用 Rust 实现的 Neovim 前端。