返回顶部
首页 > 资讯 > 后端开发 > Python >Emacs下如何使用 lsp-mode对Python进行补全
  • 221
分享到

Emacs下如何使用 lsp-mode对Python进行补全

2023-06-02 09:06:33 221人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关EMacs下如何使用 lsp-mode对python进行补全,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。LSP 是什么?LSP 全称是 Languag

今天就跟大家聊聊有关EMacs下如何使用 lsp-mode对python进行补全,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

LSP 是什么?

LSP 全称是 Language Server protocol, 是由 Microsoft 主持开发的通用语言分析器协议. 最初是为 Visual Studio Code 开发的, 现在是一个开放的标准1. 它是一个 JSON-rpc-based 的协议2, 用于编辑器或 IDE 与提供语言分析补全等功能的服务的通信, 编辑器 / IDE 和语言服务甚至可以在不同的机器上1. 理查德·斯托曼也支持该协议3.

准备
Python 环境端

Python Language Server 就是 Python 语言服务的实现, 遵从了 LSP 协议. 使用 jedi 提供了诸如补全等功能.

使用 pipenv 管理 Python 环境

cd project_floderpipenv install python-language-server[all]# pipenv install python-language-server[all] --skip-lock

Emacs 编辑器端

需要安装以下几个包, 如果使用 elpa 管理包, 添加 melpa 源后 M-x package-install <RET>安装即可

  • lsp-mode #Emacs 下 LSP 协议库

  • company-lsp #使用 company 提供补全的后端

  • lsp-ui #提供诸如 flycheck 等功能

Python 和 Emacs 准备阶段结束.

Emacs 配置

使用以下配置需要安装 use-package

(use-package lsp-mode    :config    (add-hook 'python-mode-hook        (lambda ()            (lsp-python-enable)))    ;; 调用 pyls 既上边安装的 Python Language Server    ;; 不需要安装 lsp-python, 以下几行提供与 lsp-python 相同的功能    (lsp-define-stdio-client lsp-python "python"            (lsp-make-traverser #'(lambda (dir)                        (directory-files                        dir                        nil                        "\\(__init__\\|setup\\)\\.py\\|Pipfile")))            '("pyls")))(use-package lsp-imenu    :init    ;; 启用 lsp-imenu 集成    (add-hook 'lsp-after-open-hook 'lsp-enable-imenu))(use-package lsp-ui    :init    ;; 启用 lsp-ui    (add-hook 'lsp-mode-hook 'lsp-ui-mode)    ;; 启用 flycheck    (add-hook 'python-mode-hook 'flycheck-mode))(use-package company-lsp    :config    ;; 设置 company-lsp 为后端    (push 'company-lsp company-backends))
其它

Python Language Server 可以不必在每个环境中都安装, 以 pipenv 为例, 安装 Python Language Server 到全局 Python 中, 然后在每个环境下 pipenv shell 进入环境即可补全该环境下的包.

(lsp-define-stdio-client lsp-python "python"            (lsp-make-traverser #'(lambda (dir)                        (directory-files                        dir                        nil                        "\\(__init__\\|setup\\)\\.py\\|Pipfile")))            '("pyls"))

这段配置说明了需要在目录下能找到 __init__.py 等文件后将其作为 project root 使用, 如果没找到相应文件, 则会抛出找不到项目根目录的 Warning, 并且是以 *Warnings* buffer 的形式显示的, 在 lsp-mode 的 :config 后加入下面一句, 就可以用 Message 而不是 buffer 的形式显示 Warning.

(setq lsp-message-project-root-warning t)

看完上述内容,你们对Emacs下何使用 lsp-mode对Python进行补全有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: Emacs下如何使用 lsp-mode对Python进行补全

本文链接: https://lsjlt.com/news/229550.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Emacs下如何使用 lsp-mode对Python进行补全
    今天就跟大家聊聊有关Emacs下如何使用 lsp-mode对Python进行补全,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。LSP 是什么LSP 全称是 Language...
    99+
    2023-06-02
  • Linux中如何使用命令行补全
    这篇文章主要为大家展示了“Linux中如何使用命令行补全”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中如何使用命令行补全”这篇文章吧。在 Linux 系统中,当你输入一个命令,再按两...
    99+
    2023-06-16
  • 如何对Python代码进行全解析
    今天就跟大家聊聊有关如何对Python代码进行全解析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python代码可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上...
    99+
    2023-06-17
  • Linux 下如何使用 Java 对象进行重定向?
    在 Linux 下,Java 应用程序常常需要进行文件的输入输出操作,而在实际应用中,我们经常需要将输出结果重定向到文件中,以便后续的处理。本文将介绍如何使用 Java 对象进行重定向操作,并给出相关的代码实例。 一、使用 System....
    99+
    2023-10-10
    重定向 linux 对象
  • Linux下如何使用split对文件进行切分
    这篇文章主要介绍Linux下如何使用split对文件进行切分,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!split可以将一个大文件分割成多个小文件,有时候需要将问卷分割成更小的片段,比如提高可读性,生成日志。合久必...
    99+
    2023-06-27
  • Linux下如何使用cryptsetup对磁盘进行加密
    这篇文章主要介绍Linux下如何使用cryptsetup对磁盘进行加密,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!cryptsetup是linux下的一个分区加密工具,cryptsetup是分区级别的加密,比文件系...
    99+
    2023-06-27
  • Python中如何使用HTTP库进行文件下载?
    在Python中,要进行文件下载,首先需要使用HTTP库。Python中有很多HTTP库可供使用,如urllib、requests、httplib等。在本篇文章中,我们将主要介绍使用requests库进行文件下载的方法。 安装reque...
    99+
    2023-09-21
    http 文件 面试
  • Linux下如何使用Octave对文件进行读写操作
    小编给大家分享一下Linux下如何使用Octave对文件进行读写操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Octave 是一个 Linux 上类似于 Ma...
    99+
    2023-06-27
  • Linux下如何使用parted命令对磁盘进行分区
    这篇文章主要为大家展示了“Linux下如何使用parted命令对磁盘进行分区”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何使用parted命令对磁盘进行分区”这篇文章吧。part...
    99+
    2023-06-27
  • 如何在Python中使用Selenium对异常进行处理
    这篇文章主要介绍了如何在Python中使用Selenium对异常进行处理,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对...
    99+
    2023-06-06
  • Python如何使用OpenCV对图像进行缩放功能
    这篇文章主要介绍了Python如何使用OpenCV对图像进行缩放功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。OpenCV:图片缩放和图像金字塔对图像进行缩放的最简单方法...
    99+
    2023-06-29
  • 如何使用Python对Excel表格进行拼接合并
    目录准备工作一、横向拼接1.1 一般拼接1.2 指定键进行拼接,即指定某一列作为两个表的连接依据。1.2.1 多对一1.2.2 多对多1.2.3 用on来指定多个连接键1.2.4&n...
    99+
    2023-03-22
    Python Excel表格拼接 Python Excel表格合并
  • 如何使用Pycharm进行Python开
    如何使用Pycharm进行Python开发   开发Python的IDE有很多,比如Sublime text3, eclipse等,作为数聚传媒的研发人员,我最喜欢的还是使用Pycharm进行Python开发。下面我简单介绍一下这款开发工具...
    99+
    2023-01-31
    如何使用 Pycharm Python
  • 使用Maven2如何对plugin进行开发
    这期内容当中小编将会给大家带来有关使用Maven2如何对plugin进行开发,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,创建项目,创建一个文件夹:mkdir yakov进入yakov目录,然后创建...
    99+
    2023-05-31
    maven2 plugin
  • 使用Rest如何对API进行处理
    这篇文章给大家介绍使用Rest如何对API进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、项目目标动静分离的架构,即客户端和服务器端的分离,客户端可以是IOS、android或者静态的页面。需要服务器端提供w...
    99+
    2023-05-31
    rest api
  • 使用MongoDB如何对Spring进行整合
    本篇文章给大家分享的是有关使用MongoDB如何对Spring进行整合,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。添加依赖<dependency> &n...
    99+
    2023-05-31
    mongodb spring
  • 如何使用python对图片进行批量压缩详解
    目录前言使用Python和Pillow模块压缩图片1、优化flag2、渐进式JPEG3、JPEG动态质量使用Python和Selenium模块操纵Squoosh批量压缩图片Pytho...
    99+
    2024-04-02
  • python如何使用百度AI接口进行人脸对比
    这篇文章将为大家详细讲解有关python如何使用百度AI接口进行人脸对比,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 注册账号注册并提交申请。创建应用获取AppID,API Key,Secret K...
    99+
    2023-06-14
  • linux中如何使用Python对图片进行批量命名
    小编给大家分享一下linux中如何使用Python对图片进行批量命名,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!大家在进行机器学习训练时,为了方便管理不同种类的...
    99+
    2023-06-22
  • python如何使用cProfile针对回测进行性能分析
    这篇文章主要讲解了“python如何使用cProfile针对回测进行性能分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python如何使用cProfile针对回测进行性能分析”吧!安装不...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作