首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs中的Python类型提示

问Emacs中的Python类型提示
EN

Stack Overflow用户
提问于 2017-02-27 21:12:30
回答 2查看 2.2K关注 0票数 5

我是从PyCharm来的,想学习使用Emacs (Spacemacs)来设置Python。

PyCharm有一个称为Type Hinting的特性,它基本上允许指定类型,然后根据指定的类型获取提示。Python 3.5+有PEP 484 -- Type Hints,允许在没有注释的情况下指定类型。在PEP 484之前,指定类型是使用注释完成的。

Emacs中有这样的类型提示吗?

EN

回答 2

Stack Overflow用户

发布于 2017-02-27 21:48:35

在https://github.com/davidhalter/jedi/issues/858之后,Jedi 0.10.0添加了部分PEP484支持

票数 2
EN

Stack Overflow用户

发布于 2020-06-24 05:08:05

我在2020年遇到了这个问题,并发现有一些更好的工具来解决这个问题。光靠绝地可能得不到你想要的。相反,您可能希望使用elpy、flycheck flycheck-pycheckers、pyflakes和mypy的组合。

Elpy是Emacs Python IDE包。flycheck是一个用于Emacs的通用语法检查包。flycheck-pycheckers与flycheck一起工作,允许您使用多个Python语法检查器,因为pyflake不处理类型提示,mypy不处理常规语法-您需要同时使用这两种语法。

所以你的步骤应该是

  1. 使用pip.

安装pyflakes和mypy

  1. 在您的Emacs配置中安装use-package (我会将此操作的说明留给您)。

  1. 将以下行添加到您的init.el或.emacs:

代码语言:javascript
复制
;; flycheck
(use-package flycheck
  :ensure t
  :config
  (global-flycheck-mode t)
  ;; note that these bindings are optional
  (global-set-key (kbd "C-c n") 'flycheck-next-error)
  ;; this might override a default binding for running a python process,
  ;; see comments below this answer
  (global-set-key (kbd "C-c p") 'flycheck-prev-error)
  )
;; flycheck-pycheckers
;; Allows multiple syntax checkers to run in parallel on Python code
;; Ideal use-case: pyflakes for syntax combined with mypy for typing
(use-package flycheck-pycheckers
  :after flycheck
  :ensure t
  :init
  (with-eval-after-load 'flycheck
    (add-hook 'flycheck-mode-hook #'flycheck-pycheckers-setup)
    )
  (setq flycheck-pycheckers-checkers
    '(
      mypy3
      pyflakes
      )
    )
  )
;; elpy
(use-package elpy
  :after poetry
  :ensure t
  :config
  (elpy-enable)
  (add-hook 'elpy-mode-hook 'poetry-tracking-mode) ;; optional if you're using Poetry
  (setq elpy-rpc-virtualenv-path 'current)
  (setq elpy-syntax-check-command "~/.pyenv/shims/pyflakes") ;; or replace with the path to your pyflakes binary
  ;; allows Elpy to see virtualenv
  (add-hook 'elpy-mode-hook
        ;; pyvenv-mode
        '(lambda ()
           (pyvenv-mode +1)
           )
        )
  ;; use flycheck instead of flymake
  (when (load "flycheck" t t)
  (setq elpy-modules (delq 'elpy-module-flymake elpy-modules))
  (add-hook 'elpy-mode-hook 'flycheck-mode))
  )
;; poetry
(use-package poetry
  :ensure t)

这个解决方案将帮助您在Emacs中设置Python语法和类型提示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42486695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档