(1) 本人发帖主要有以下考虑:
-
我在紧张的实习工作时期是来不及折腾 Emacs 的, 现在上学了可以安心的配置一个更适合自己的 Python 开发环境了.
-
我使用的是 PyCharm 专业版, 一般有的新功能我都尽量去尝鲜, 包括 GitHub Copilot 和 VS Code (+ Copilot X) 这些都是日常使用的生产力工具.
-
现在如果吸收上面工具的优点, 是否可以配置出一个更优秀的 IDE?
(2) 如果让个人评分, 下面是一个基于个人体验的表格:
功能 |
评分 (PyCharm) |
评分 (Visual Studio Code) |
补全能力 (基于项目) |
5 |
3 |
补全性能 (基于代码片段) |
4 |
5 |
项目整体分析 (包括 JetBrains AI 或 Copilot X) |
5 |
3 |
整体性能 |
3 |
5 |
可靠性 (评分较低是因为有 Vim 和 Emacs 为参照) |
3 |
4 |
代码规范性检查 (基于 Python Black) |
5 |
3 |
(3) 关于本人目前的 Emacs 设计 (面向 Python 编程):
-
conda.el 提供了 JetBrains 那样底层的 Python 环境配置、切换, 同时有着不输 VS Code 的性能.
-
blacken 提供了基于 Python Black 的代码格式检查 (和格式化).
-
copilot.el 提供了体验类似 JetBrains (目前可能没有 VS Code 的 Copilot X 那样高性能) 的基于数据分析的代码补全.
-
eglot 提供了类似 VS Code 体验的语言服务器, 但目前我不知道在分析整个项目中如何正确配置它, 所以体验还是比 JetBrains 差的.
(本人目前 Python 相关的 Emacs 配置: init-eglot.el)
综上, 欢迎大家交流讨论~
2 个赞
其实一个 lsp-bridge 就可以满足你所有的需求, 而且性能比 eglot/lsp-mode 快很多。
lsp-bridge自带代码补全, copilot, format, 而且默认是组合 pyright 和 ruff 多服务器的, pyright 提供代码补全, ruff 提供代码诊断服务。
3 个赞
除了 anaconda 还可以试试 pdm,不过目前好像还没有 emacs 集成
之前花了一点时间读了读 python.el 的实现,python 虚拟环境的配置我直接使用了 .dir-local.el:
((python-base-mode . ((eval . (setq-local python-shell-virtualenv-root
(file-name-concat
(project-root (project-current))
".venv")))
(eval . (setq-local python-shell-extra-pythonpaths
nil))
(eval . (setq-local python-shell-process-environment
nil))
)))
但这也说不上什么好办法,而且这只针对 emacs 内通过 run-python
打开的 python 解释器。
项目内文件的项目相关环境变量设置除了通过 directory-local variable 外还有其他外部工具可用,比如 direnv 和 shadowenv,但目前还没试过。简单试了下,还挺好用的:
在 Emacs 中进行分离式项目环境变量管理 – direnv
1 个赞
oldhu
4
pycharm的调试能力,pycharm pro对cython的调试能力,基本上独一档
1 个赞
Nasy
5
Python lsp可以偷偷用pylance(这个速度快,效果也不错,甚至有inlay hint
3 个赞
偷偷用pylance什么意思,pylance不是只能在vscode用吗
(use-package lsp-bridge
:straight '(lsp-bridge :type git :host github :repo "manateelazycat/lsp-bridge"
:files (:defaults "*.el" "*.py" "acm" "core" "langserver" "multiserver" "resources")
:build (:not compile))
:init
(global-lsp-bridge-mode))