我想使用Anaconda虚拟环境在emacs下通过lsp-pyright建立python环境,哪位老大能共享一下这种配置?
-
你可以参考下我的python 配置,我是一个Emacs的新手,基本是抄了spacemacs的python 配置。里面有包含lsp-pyright 的配置,很简单。
-
lsp-pyright 依赖lsp, 这是我lsp的配置。lsp的配置相对简单,你也可以参考官网。我只是修改了一些变量的默认值,加速lsp。
-
我运行的逻辑是
- 直接打开python 文件,在里面通过
pyvenv
包提供的pyvenv-activate
或者pyvenv-workon
函数(第二个函数需要你设置环境变量WORKON_HOME
,指向你默认的conda envs 目录,如我是设置为export WORKON_HOME="${HOME}/miniconda/envs"
在.bash_profile 文件里),来唤起相应的conda 环境(我自己是安装了miniconda, 但Emacs 与conda是独立的,并没有在conda 下安装Emacs)。 - 唤起后,如果你觉得lsp-pyright 并没有加载到你期望的python 环境 (一个判断方式是,在加载文件后,运行
spacemacs/python-start-or-switch-repl
,来开启一个python repl/console,看看你当前环境里的一些包是否可以正常加载,这个函数在配置里面有定义),可以运行lsp-workspace-restart
。 我习惯是前者运行后,就执行下后者。
- 直接打开python 文件,在里面通过
-
额外应该需要但是可以靠后再配置:company补全,这个我并不懂,是抄了很多Seagle的Centaur Emacs配置 (这位大神就在我们论坛里,他是lsp-pyright 和 doom-modeline的作者,这两个包我都在使用),我的company 配置在这里。
谢谢楼上。我也是emacs和conda是独立的,这样方便,pycharm下我也是这样。我是个初学者,我试着参照你们的配置文件看看是否能成功。正在学emacs和elisp语言,希望学完之后能有点长进。
赞,我都没学elisp。
请问,这两个配置我在init.el文件里要如何指定它们,让它们生效?
company 配置 .emacs.d/editor-completion.el at master · tshu-w/.emacs.d · GitHub
pyright 配置 .emacs.d/lang-python.el at master · tshu-w/.emacs.d · GitHub
项目目录下pyproject.toml
:
[tool.pyright]
# https://github.com/microsoft/pyright
venvPath = "../../.local/share/anaconda3/envs"
venv = "multimodalER"
typeCheckingMode = "off"
UseLibraryCodeForTypes = false
配置文件下载后放哪里?是不是把内容都复制到文件init.el里去?
这个,建议你看点基础知识,基本是的,不过我用了 use-package
你需要看看怎么用,另外 general
是绑键用的,不用可以去掉
关于多个配置文件的文章,哪里有?
也没啥文章,就模仿那个格式写就行了,刚开始也可以不用多文件,如果不用 evil,可以参考 GitHub - purcell/emacs.d: An Emacs configuration bundle with batteries included GitHub - seagle0128/.emacs.d: Centaur Emacs - A Fancy and Fast Emacs Configuration 如果用,可以从 GitHub - syl20bnr/spacemacs: A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it's Emacs *and* Vim! GitHub - doomemacs/doomemacs: An Emacs framework for the stubborn martian hacker 开始(论坛有相关讨论)
- 你可以参考我的init.el 怎么调用他们的
- 你也可以把代码 copy到init.el 里,
(provide 'init-python)
这样的句子就不用copy了。
上面不管哪个,可以删除你不需要的地方,也有可能我定义的变量在其他文件,你删除掉先不管就好了。
关于pyright的使用:
- GitHub - microsoft/pyright: Static type checker for Python
- GitHub - microsoft/pyright: Static type checker for Python 我运行的时候,都是先在command-line环境下,安装了pyright。感觉这个是必须的? 是不是lsp-pyright 也需要我在terminal 里安装好pyright的可执行程序,lps-pyright 本身是调用这个程序? @seagle0128
是的,紫薯布丁
只要exec-path能找到pyright就行。最简单的办法M-x lsp-install-server
或者 lsp-update-server
。其实打开python文件, lsp-pyright
会自动安装的。
非常感谢楼上
完全照抄你的init-python.el,出现如下警告和错误:
Warning (package): Unnecessary call to ‘package-initialize’ in init file
Error (use-package): python/:config: Symbol’s function definition is void: despot-def
Error (use-package): blacken/:config: Symbol’s function definition is void: despot-def
Error (use-package): python-isort/:config: Symbol’s function definition is void: despot-def
Error (use-package): conda/:config: Symbol’s function definition is void: despot-def
Error (use-package): pytest/:config: Symbol’s function definition is void: despot-def
Warning (initialization): An error occurred while loading ‘/home/yinxiuqu/.emacs.d/init.el’:
回复错人了,despot-def
是绑定快捷键用的,需要去掉相关的
去掉你说的之后,仍然有错误: Warning (package): Unnecessary call to ‘package-initialize’ in init file Warning (initialization): An error occurred while loading ‘/home/yinxiuqu/.emacs.d/init.el’:
End of file during parsing: /home/yinxiuqu/.emacs.d/lisp/init-python.el
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.
你先都放到 init.el 中,然后把配置贴出来
这个问题已经搞定了,是我重复了(package-initialize)
你好,我用virtualenv配置虚拟环境和pyright做后端,我在base环境下pip的epc和importimagic,激活venv后不提示里面的包,是因为我没有在虚拟环境中装importimagic和epc吗