Specify which python version pylint should evaluate for

Question:

I’m using Sublime Text 3 With Pylinter to run pylint on my files.

However, on the same machine, I work on files for both python 2, and python 3 projects (the code is executed on one of several remote test-VMs, via SSH. I’m modifying the files by opening them over SMB. This is my home test-lab, and I’m finally sitting down to learn py3k).

Can I easily override the mechanism pylint uses to determine the python version it should lint for? Ideally, there would be an inline directive, but I have not had much luck finding anything.

I’m (editing) on Windows (the remote VMs are linux, but that’ irrelevant here), for what it’s worth.

Asked By: Fake Name

||

Answers:

AFAIK Pylint lints for the version of Python it is running on and it is not possible to override it.

Answered By: gurney alex

You should have two pylint installations, say pylint2 and pylint3, then write a wrapper script that will subprocess the desired one.

Answered By: sthenault

Expanding on @sthenault’s answer and borrowing heavily from @simon’s to a very similar question on askubuntu, the solution is to write a wrapper script around pylint that executes it with the appropriate version of the Python interpreter. Drop the following into a script called mypylint (or whatever) somewhere in your $PATH:

#! /usr/bin/env bash

python_interpreter="python${1}"
pylint_args="-f colorized ${@:2}"
pylint_import=$(cat << PYTHON
import sys
import pkg_resources

__requires__ = "pylint"
sys.exit(
    pkg_resources.load_entry_point("pylint", "console_scripts", "pylint")()
)
PYTHON
)

$python_interpreter -c "$pylint_import" $pylint_args

Then, execute it like so: mypylint 2|3 PYLINT_ARGS. For instance:

mypylint 2 -f colorized module.py

I’m not sure how you can tie that into sublime-text, but it more generally answers the question of parallel versions of pylint. I also bundled the above solution into a gist.

Answered By: sevko

This is good, but I think the simplest thing is just to use virtualenv, and install pylint in each virtualenv. The correct pylint and python interpreter will be used.

Answered By: user3685621

You can install pylint3 which will evaluate for python 3.0, and pylint which will evaluate the code as python 2.7 by default.

Answered By: David Greydanus

You can try python2 -m pylint ... and python3 -m pylint .... That ensures that you use the right version.

Answered By: chris

You can override on a per-project level in Sublime Text by changing the pylint executable setting in Project->Edit Project to include:

"settings":
{
    "SublimeLinter.linters.pylint.executable": ["py", "-3.4", "-m", "pylint"],
}

substituting 3.4 for your preferred flavour

Answered By: RoboCodoDodo
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.