ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

LSP-pylsp

by sublimelsp ST3

Convenience package for the Python Language Server

Details

Installs

  • Total 729
  • Win 226
  • Mac 245
  • Linux 258
Jul 29 Jul 28 Jul 27 Jul 26 Jul 25 Jul 24 Jul 23 Jul 22 Jul 21 Jul 20 Jul 19 Jul 18 Jul 17 Jul 16 Jul 15 Jul 14 Jul 13 Jul 12 Jul 11 Jul 10 Jul 9 Jul 8 Jul 7 Jul 6 Jul 5 Jul 4 Jul 3 Jul 2 Jul 1 Jun 30 Jun 29 Jun 28 Jun 27 Jun 26 Jun 25 Jun 24 Jun 23 Jun 22 Jun 21 Jun 20 Jun 19 Jun 18 Jun 17 Jun 16 Jun 15 Jun 14
Windows 1 1 5 3 0 1 5 4 4 5 6 6 0 3 3 0 3 1 4 3 9 1 7 6 5 2 3 3 9 2 6 7 3 2 1 2 2 3 2 1 3 5 12 5 8 3
Mac 1 1 1 4 2 1 1 4 2 6 4 1 4 1 1 3 5 3 5 2 1 0 5 4 2 2 5 3 9 4 5 4 5 4 5 9 4 2 4 5 5 5 10 3 7 8
Linux 2 1 7 3 6 3 2 2 3 5 0 4 3 1 5 7 2 3 4 2 3 4 9 3 4 1 1 2 6 10 3 5 3 5 6 4 4 4 0 4 9 4 4 3 4 7

Readme

Source
raw.​githubusercontent.​com

LSP-pylsp

This is a helper package that automatically installs and updates the Python LSP Server (pylsp) for you.

To use this package, you must have:

  • An executable python (on Windows) or python3 (on Linux/macOS)
  • The LSP package
  • For Ubuntu and Debian users, you must also install python3-venv with apt
  • It's recommended to also install the LSP-json package which will provide autocompletion and validation for this package's settings.

Applicable Selectors

This language server operates on views with the source.python base scope.

Installation Location

The server is installed in the $CACHE/Package Storage/LSP-pylsp directory, where $CACHE is the base data path of Sublime Text. For instance, $CACHE is ~/.cache/sublime-text on a Linux system. If you want to force a re-installation of the server, you can delete the entire $CACHE/Package Storage/LSP-pylsp directory or just reinstall the package. The installation is done through a virtual environment, using pip. Therefore, you must have at least the python executable installed and it must be present in your $PATH.

Like any helper package, installation starts when you open a view that is suitable for this language server. In this case, that means that when you open a view with the source.python base scope, installation commences.

Running alongside LSP-pyright

LSP-pyright is a more modern, faster and actively supported alternative to LSP-pylsp. While it's arguably much better solution for validating the code and type-checking, it doesn't support linters or code formatters like flake8, pyflakes, pydocstyle, yapf or black. The solution to that could be to run them alongside each other with code checking features disabled in LSP-pylsp. To achieve that, open Preferences: LSP-pylsp Settings from the Command Palette and add the following user settings:

{
    "disabled_capabilities": {
        "completionProvider": true,
        "definitionProvider": true,
        "documentHighlightProvider": true,
        "documentSymbolProvider": true,
        "hoverProvider": true,
        "referencesProvider": true,
        "renameProvider": true,
        "signatureHelpProvider": true,
    },
    "settings": {
        "pylsp.plugins.jedi_completion.enabled": false,
        "pylsp.plugins.jedi_definition.enabled": false,
        "pylsp.plugins.jedi_hover.enabled": false,
        "pylsp.plugins.jedi_references.enabled": false,
        "pylsp.plugins.jedi_signature_help.enabled": false,
        "pylsp.plugins.jedi_symbols.enabled": false,
    },
}

Configuration

Configure the Python LSP Server by accessing Preferences > Package Settings > LSP > Servers > LSP-pylsp.

Virtual environments

If your project needs to run and be validated within a virtual environment, point to the environment using the pylsp.plugins.jedi.environment setting. For example if your virtual environment lives in .venv/myproject within the the project directory then run Project: Edit Project from the Command Palette and add the setting like so:

Error: language “jsonc” is not supported
{
    // "folders": [
    //     ...
    // ]
    "settings":
    {
        "LSP":
        {
            "LSP-pylsp":
            {
                "settings":
                {
                    "pylsp.plugins.jedi.environment": "./.venv/myproject"
                }
            }
        }
    }
}

You can also set it in the LSP-pylsp global settings but it's more likely that you'd want this to be overriden per-project.

Code Completion

This language server provides code completion through JEDI.

Signature Help

This language server provides signature help through JEDI.

Goto

This language server provides “goto definition” through JEDI.

Find References

This language server provides “find references” through JEDI.

Rename

This language server provides “rename word/symbol” through JEDI.

Linters

The default linter is pycodestyle. The possible linters are:

  • pycodestyle ("pylsp.plugins.pycodestyle.enabled" in the settings)
  • pydocstyle ("pylsp.plugins.pydocstyle.enabled" in the settings)
  • flake8 ("pylsp.plugins.flake8.enabled" in the settings) For flake8 to work, you must also modify "pylsp.configurationSources" to be ["flake8"] instead of the default ["pycodestyle"].
  • pyflakes ("pylsp.plugins.pyflakes.enabled" in the settings)
  • pylint ("pylsp.plugins.pylint.enabled" in the settings)
  • pylsp_mypy ("pylsp.plugins.pylsp_mypy.enabled" in the settings)

After changing a linter, you must restart Sublime Text.

Formatters

The default formatter is autopep8. The possible formatters are:

  • yapf ("pylsp.plugins.yapf.enabled" in the settings)
  • autopep8 ("pylsp.plugins.autopep8.enabled" in the settings)
  • black ("pylsp.plugins.pylsp_black.enabled" in the settings)

After changing a formatter, you must restart Sublime Text.

Sorting import statements

To sort your import statements, you can enable isort. The relevant setting is "pylsp.plugins.pyls_isort.enabled" in the settings. Sorting is done through the “LSP: Format Document” option in the Context Menu by right-clicking in the view with your mouse.

Sublime Text Plugin Development

By default, the environment of pylsp is adjusted so that the PYTHONPATH includes the directory where sublime.py and sublime_plugin.py live, as well as the $DATA/Packages directory. This enables accurate code completion for these files.