我来自PyCharm,想学习用Emacs(Spacemacs)设置Python。
PyCharm有一个名为Type Hinting的特性,它基本上允许指定类型,然后基于指定的类型获得提示。Python 3.5+有PEP 484 -- Type Hints,它允许指定类型而不需要注解。在PEP 484之前,指定类型是使用注解完成的。
Emacs中是否有这样的类型提示?
我来自PyCharm,想学习用Emacs(Spacemacs)设置Python。
PyCharm有一个名为Type Hinting的特性,它基本上允许指定类型,然后基于指定的类型获得提示。Python 3.5+有PEP 484 -- Type Hints,它允许指定类型而不需要注解。在PEP 484之前,指定类型是使用注解完成的。
Emacs中是否有这样的类型提示?
3条答案
按热度按时间mzmfm0qo1#
Jedi 0.10.0在https://github.com/davidhalter/jedi/issues/858之后增加了部分PEP 484支持
nnt7mjpx2#
我在2020年遇到了这个问题,发现有一些更好的工具可以解决这个问题。单独使用Jedi可能无法得到你想要的东西。相反,你可能会想使用
elpy
、flycheck
、flycheck-pycheckers
、pyflakes
和mypy
的组合。flycheck是Emacs的一个通用语法检查包。flycheck-pycheckers与flycheck一起使用,允许您使用多个Python语法检查器,因为pyflakes不处理类型提示,mypy不处理通用语法-您需要同时使用这两个语法检查器。
所以你的步骤是
1.使用pip安装pyflakes和mypy。
1.在Emacs配置中安装
use-package
(我将把这方面的说明留给您)。1.将以下行添加到您的init.el或.emacs:
这个解决方案将帮助您在Emacs中设置Python语法和类型提示。
xxslljrj3#
elpy
在过去是很棒的,我使用了一个非常类似于@jidicula的设置。但是,elpy
不再适用于当前版本的jedi
,并且这个问题已经一年多没有得到解决了。结果elpy
不再被维护,请参见https://github.com/jorgenschaefer/elpy我试过
eglot
,它能完成这项工作。然而,eglot
author insists on using obsoleteflymake
instead of its modern replacementflycheck
。flycheck
可以同时使用mypy3
和pyflakes
,而flymake
不能,所以必须在同一个缓冲区中同时使用flycheck
和flymake
,这会产生不必要的摩擦和新的困难,我不想浪费时间。lsp-mode
看起来是目前最好的选择。它更受欢迎,贡献者多5倍,更灵活,更少固执己见,因为它同时适用于flycheck
和flymake
。我安装了
lsp-mode
Python依赖项:pip
也应该提供这些功能。