pylint-venv
Pylint does not respect the currently activated virtualenv if it is not installed in every virtual environment individually. This module provides a Pylint init-hook to use the same Pylint installation with different virtual environments.
Installation
pip install pylint-venv
Add the hook to your Pylint configuration. See the section below corresponding to the type of configuration file you use.
Configure with pyproject.toml
Add the following to your pyproject.toml:
[tool.pylint.MAIN]
init-hook = """
try: import pylint_venv
except ImportError: pass
else: pylint_venv.inithook()
"""
Configure with .pylintrc
Add the following to your .pylintrc:
[MAIN]
init-hook=
try: import pylint_venv
except ImportError: pass
else: pylint_venv.inithook()
If you add this to your ~/.pylintrc in your home directory, it will be applied to all projects by default.
Usage
The hook will then be used automatically if
a virtualenv without pylint is active,
or a Conda environment without pylint is active,
or no environment is active but your CWD contains virtualenv directory.
Anything listed in the PYLINT_VENV_PATH environment variable is considered a virtualenv directory. The default, if the variable is unset, is .venv. Use a colon (:) as path separator. Example for checking directories .venv and .virtualenv:
PYLINT_VENV_PATH=.venv:.virtualenv
You can also call the hook via a command line argument:
$ pylint --init-hook="import pylint_venv; pylint_venv.inithook()"
This way you can also explicitly set an environment to be used:
$ pylint --init-hook="import pylint_venv; pylint_venv.inithook('$(pwd)/env')"
If pylint itself is installed in a virtualenv, then you can ignore it by passing force_venv_activation=True to force the activation of a different virtualenv:
$ pylint --init-hook="import pylint_venv; pylint_venv.inithook(force_venv_activation=True)"
This will try to automatically detect virtualenv and activate it.
Troubleshooting
General
pylint_venv fails to import
Most likely pylint-venv is not installed in the same virtual environment as pylint. Either make sure to ensure pylint-venv into the same virtual environment as pylint, or add the appropriate path in the init hook:
import sys
sys.path.append("/path/to/installation/folder/of/pylint_venv")
pylint_venv breaks parsing with tools
When tools call pylint with -f json, an extra line may break the parser, as the
output is no longer valid json. To avoid printing “using venv …”, pass quiet=True
to inithook
$ pylint -f json --init-hook="import pylint_venv; pylint_venv.inithook(quiet=True)"
Virtual environment does not get used (installed modules are reported as ‘unable to import’)
Most likely the virtual environment does not get activated because pylint itself
runs in a virtual environment. You can force the activation of the virtual
environment with the force_venv_activation=True flag to the
pylint_venv.inithook function.
Homebrew
Homebrew installs pylint into a separate virtual environment, thus you will need to set the force_venv_activation=True flag. This also means, that pylint_venv will be in a different search path and you must add the proper path to sys.path. You can use the following configuration adjusted to your Python version:
[MAIN]
init-hook=
import sys
sys.path.append("/usr/local/lib/python3.8/site-packages")
try: import pylint_venv
except ImportError: pass
else: pylint_venv.inithook(force_venv_activation=True)
Release files for pylint-venv 3.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pylint_venv-3.0.4.tar.gz | 5.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pylint_venv-3.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.1 kB
Release files / pylint_venv-3.0.4.tar.gz
| Download URL | pylint_venv-3.0.4.tar.gz |
|---|---|
| Size | 5.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4c71c2ad14fc0549699440bcc460994ffddc1481b9078404b4c43d2806ef0f59
|
|
BLAKE2b-256 checksum How to use checksums |
48ac88e53ad1362392e68a36a4f08ca82c76e6cb6321d8ecba901cca5a70dcc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.4 CPython/3.13.0 Linux/6.5.0-1025-azure
|
Release files / pylint_venv-3.0.4-py3-none-any.whl
| Download URL | pylint_venv-3.0.4-py3-none-any.whl |
|---|---|
| Size | 5.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
31006a3df398f58f962c9e5620e756b284e8b2bc490594ce5ee5da41920cb32c
|
|
BLAKE2b-256 checksum How to use checksums |
a610040e1928236e3d34b26639e3427df88c7249a85aadc621cea2158589b4f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.4 CPython/3.13.0 Linux/6.5.0-1025-azure
|