Lsp Python Ms

lsp-mode ❤️ Microsoft's python language server
Alternatives To Lsp Python Ms
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Nvim Lspconfig7,427
4 days ago38apache-2.0Lua
Quickstart configs for Nvim LSP
Lua Language Server2,352
a day ago228mitLua
A language server that offers Lua language support - programmed in Lua
a month ago76gpl-3.0Emacs Lisp
A client for Language Server Protocol servers
Metals1,8992616 hours ago39August 10, 2022241apache-2.0Scala
Scala language server with rich IDE features 🚀
Bash Language Server1,609
2 days ago45mitTypeScript
A language server for Bash
a day ago99mitZig
The @ziglang language server for all your Zig editor tooling needs, from autocomplete to goto-def!
2 days ago70mitPython
Client implementation of the Language Server Protocol for Sublime Text
Typescript Language Server1,32577323 days ago106June 24, 202225otherTypeScript
TypeScript & JavaScript Language Server
Kotlin Language Server1,212
9 days ago1March 10, 2021161mitKotlin
Kotlin code completion, linting and more for any editor/IDE using the Language Server Protocol
Elixir Ls1,166
2 days ago1February 21, 202082apache-2.0Elixir
A frontend-independent IDE "smartness" server for Elixir. Implements the "Language Server Protocol" standard and provides debugger support via the "Debug Adapter Protocol"
Alternatives To Lsp Python Ms
Select To Compare

Alternative Project Comparisons

lsp-mode client leveraging Microsoft’s python-language-server.

This project is marked as DEPRECATED, since [Microsoft’s Python Lang Server]( has already been archived and is replaced by [pyright]( The successor is [lsp-pyright](


Include lsp-python-ms in the configuration file:

(require 'lsp-python-ms)
(setq lsp-python-ms-auto-install-server t)
(add-hook 'python-mode-hook #'lsp) ; or lsp-deferred

A minimal use-package initialization might be:

(use-package lsp-python-ms
  :ensure t
  :init (setq lsp-python-ms-auto-install-server t)
  :hook (python-mode . (lambda ()
                          (require 'lsp-python-ms)
                          (lsp))))  ; or lsp-deferred

Installing the executable


Building the executable manually is difficult on NixOS, but it can be easily installed via the package manager. At the time of writing (May 2020), it is not available on the 20.03 release, but can be acquired on the unstable branch.

nix-channel --add nixos
nix-channel --update nixos

You can then install the executable by running nix-env -iA nixpkgs.python-language-server or by adding nixpkgs.python-language-server to your configuration.nix and creating a new generation. Note that python37Packages.python-language-server refers to Palintir’s language server, not Microsoft’s.

Finally, ensure that Emacs knows where to find the executable by setting lsp-python-ms-executable.

(use-package lsp-python-ms
  :ensure t
  :hook (python-mode . (lambda ()
                         (require 'lsp-python-ms)
  (setq lsp-python-ms-executable (executable-find "python-language-server")))

Most other distros

Normally the python-language-server will be downloaded automatically if it doesn’t exist while opening the python scripts.

If you have troubles to download the package, you can also build the server yourselves.

  1. Install dotnet-sdk
  2. Clone and build python-language-server:
    git clone
    cd python-language-server/src/LanguageServer/Impl
    dotnet publish -c Release -r osx-x64   # mac

    Change the -r flag according to your architecture and operating system. See Microsoft’s Runtime ID Catalog for the right value for your system.

    Then make the binary executable.

    chmod a+x $(git rev-parse --show-toplevel)/output/bin/Release/osx-x64/publish/Microsoft.Python.LanguageServer

    NOTE: on some systems (for example, Fedora), the executable comes out as Microsoft.Python.LanguageServer.LanguageServer.

  3. Set executable to lsp-python-ms-executable.
    ;; for executable of language server, if it's not symlinked on your PATH
    (setq lsp-python-ms-executable

For development, you might find it useful to run cask install.


  1. Unresolved import warnings

    Set workspace root of `lsp-mode` properly, and add the extra directories to lsp-python-ms-extra-paths or PYTHONPATH. Refer to Troubleshooting - Unresolved import warnings and #96.

  2. Autocompletion doesn’t work

    The folder may have huge folders and files, and the server takes a long time to index them. So please DO NOT put huge files in the project/workspace folder.

  3. Set path of the Python executable for each project/workspace

    Set the variable lsp-python-ms-python-executable before the `lsp-mode` being loaded.

    First, add hack-local-variables-hook in `init.el` to achieve loading `lsp-mode` after the `.dir-locals.el` file of each project/workspace being loaded.

      (add-hook 'hack-local-variables-hook
    	       (lambda ()
    		 (when (derived-mode-p 'python-mode)
    		   (require 'lsp-python-ms)
    		   (lsp)))) ; or lsp-deferred

    Second, create `.dir-locals.el` file in the root directory of project to specify the varibale lsp-python-ms-python-executable for the project/workspace.

    ((python-mode . ((lsp-python-ms-python-executable . "/.../bin/python"))))


All credit to cpbotha on vxlabs! This just tidies and packages his work there.

Popular Language Server Projects
Popular Lsp Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Emacs Lisp
Language Server