事情要从安装python
的lsp
服务器说起
一开始的时候不需要用到python
环境配置,直接
sudo pip3 install python-language-server[all]
完成
后来要引入环境了,使用的是
conda activate flask-dev
sudo pip3 install `python-lanague-server[all]`
到了Emacs配置lsp
的时候,问题来了:
lsp
该怎么设置 python的开发环境
lsp
能自动检测到 环境吗?
- 如果一些项目的依赖被安装在不同的环境中,该怎么为他们分别设置
conda env
- 如果直接在
.emacs
配置文件下修改,代码好像会越来越冗余,能不能在每个项目下写一个配置文件,让Emacs来加载
有关lsp
与conda env
的问题我以前提过,不过沉了,现在还不知道怎么办
再后来尝试用 idea,发现创建python
项目的时候可以这样添加SDK
发现这个以后,我才想emacs能不能为每个项目添加一个配置文件,像
.idea
一样
配置:
(package-install 'direnv)
(direnv-mode)
Ruby的例子,项目目录 .envrc
use rbenv
Python 的话:
layout python3
参考 GitHub - direnv/direnv: unclutter your .profile
不太常用 conda, 我记得之前是这么解决的, 用 pyvenv 这个包, 每个项目的根目录下面用 dir-locals.el
文件指定要用的 env. 文件内容类似这样
((python-mode . ((pyvenv-workon . "~/.miniconda3/envs/tvm")
(eval . (pyvenv-mode)))))
pyvenv 会按照指定的 env 去 set 一些环境变量, 我用的是 lsp-python-ms 这个 language server, 看起来它可以从一些环境变量知道应该用哪个 env, 所以上面 pyvenv 设置好之后 lsp 就能用了, 其他的 server 不太确定, 不过应该也会支持.
melpa 里面有个 conda package, 应该可以实现类似的功能, 不过我没折腾过.