-
-
Notifications
You must be signed in to change notification settings - Fork 419
Open
Description
Hey there, I managed to configure WSP using LSP4IJ in PyCharm and good old pipx. I assume you have pipx.
Here's how
1 Install python-lsp-server
# Install pylsp
pipx install "python-lsp-server[flake8]"
# Inject required plugins
pipx inject python-lsp-server wemake-python-styleguide
pipx inject python-lsp-server pyls-flake8Important: The
[flake8]extra does NOT install the flake8 plugin — you must manually injectpyls-flake8.
2 Verify Installation.
pipx runpip python-lsp-server list
# or
pipx runpip python-lsp-server list | grep -E "(flake8|wemake|pyls-flake8|Flake8-pyproject)"Expected output:
flake8 7.x.x
pyls-flake8 0.x.x
wemake-python-styleguide 1.x.x
3 Find pylsp Executable Path
where pylspNote the path: C:\Users\Day\.local\bin\pylsp.exe
4 Create LSP server
- Settings → Languages & Frameworks → Language Server Protocol → Server Definitions
- Click "+" to add a new server
- Configure:
| Field | Value |
|---|---|
| Name | pylsp-flake8 |
| Path | C:\Users\Day\.local\bin\pylsp.exe |
- In the Configuration tab, add this JSON:
{
"pylsp": {
"plugins": {
"flake8": {
"enabled": true,
"maxLineLength": 70,
"select": ["WPS", "E"],
"ignore": ["WPS111", "WPS602"]
},
"pycodestyle": {
"enabled": false
},
"pyflakes": {
"enabled": false
}
}
}
}or
{
"pylsp": {
"plugins": {
"flake8": {
"enabled": true,
"config": "C:\\...whatever...\\.flake8"
},
"pycodestyle": { "enabled": false },
"pyflakes": { "enabled": false },
"mccabe": { "enabled": false },
"pyls_isort": { "enabled": false },
"pylsp_mypy": { "enabled": false },
"rope_autoimport": { "enabled": false },
"rope_completion": { "enabled": false }
}
}
}-
In Mappings - Language - Languages add the Python language.
-
Click OK
5 Restart PyCharm
Restart PyCharm completely for the LSP server to initialize.
6 Test Inline Errors
Create a test file with intentional WPS errors:
# test_wps_errors.py
"""Test file with WPS errors."""
# WPS407: Mutable module constant
ITEMS_LIST = []
# WPS110: Wrong variable name
data = {"key": "value"}
obj = object()
def process(x):
# WPS421: Wrong function call (print)
print("Processing...")
# WPS432: Magic number
return x * 3.14159- WPS errors appear as inline squiggles (yellow/orange underlines)
- Hovering shows the WPS error message
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels