Instalando o Pylint para Python3 no Ubuntu

29

Meu entendimento é que a última versão do Pylint (1.0.0 no momento da redação deste texto) tem suporte para Python 3, mas não consigo fazê-lo funcionar no Ubuntu 13.04 de 64 bits com o Python 3.3.

Eu segui as instruções de instalação no site do PyPi , e o Pylint 1.0.0 parece estar instalado com sucesso ( pylint --version retorna o pylint 1.0.0), e funciona com o código Python 2.7, mas relata um erro de sintaxe quando ele vê instruções não-locais e tal.

O que dá? Há instruções especiais de instalação para o Pylint no Ubuntu?

    
por Jerrad Genson 03.09.2013 / 18:40

6 respostas

25

Python 2 e 3 são animais separados. Se você instalar um script nos pacotes de sites de uma versão, não os instalará na outra.

Eu o instalaria através do pip, mas você precisaria da versão correta do pip.

sudo apt-get install python3-pip
sudo pip-3.3 install pylint

Isto irá substituir sua versão 2.7. Podemos confirmar isso verificando less $(which pylint) :

#!/usr/bin/python3.3
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint==1.0.0','console_scripts','pylint'
__requires__ = 'pylint==1.0.0'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint==1.0.0', 'console_scripts', 'pylint')()
    )
    
por Oli 03.09.2013 / 18:50
20

O comentário de @sayth à resposta aceita foi o que me atraiu aqui - eu escrevo os scripts python 2 e python 3, e quero poder verificar o conjunto de regras correto. A instalação do pylint usando pip3 install pylint grava um script curto em /usr/local/bin que invoca o interpretador python3 e parece, portanto, assumir que todos os arquivos a serem verificados são scripts python 3.

para contornar isso, agora tenho os seguintes arquivos:

~/bin/pylint2 :

#!/usr/bin/python2
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint','console_scripts','pylint'
__requires__ = 'pylint'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint', 'console_scripts', 'pylint')()
    )

e ~/bin/pylint3 :

#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint','console_scripts','pylint'
__requires__ = 'pylint'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint', 'console_scripts', 'pylint')()
    )

e depois, porque gosto de usar o pylint diretamente do menu "Build Commands" do Geany, e não consigo especificar comandos diferentes para os scripts python 2 e python 3, também tenho ~/bin/pylint :

#!/bin/bash
if [[ $(head -n 1 "${@: -1}") == *python3* ]]
then
    # python3 file
    pylint3 "[email protected]"
else
    pylint2 "[email protected]"
fi

que envia a versão correta cheirando o shebang.

Não é perfeito, certamente, mas funcional e, talvez, útil para os outros.

    
por simon 12.02.2014 / 02:24
8

sudo apt install pylint3

Trabalhei para mim no Ubuntu 16.04.2 LTS

    
por Phil 17.07.2017 / 02:00
6

Como outro método para executar o pylint no Python 2 e 3, observe que você pode usar a opção -m do Python para executar um módulo instalado no sistema na versão atual do Python, para fazer

$ python2 -m pylint
$ python3 -m pylint

para selecionar explicitamente qual deles você deseja. Você poderia transformá-los em aliases ou scripts de shell, se quisesse.

    
por Soren Bjornstad 11.07.2016 / 00:46
2

A raiz do problema é que o pylint deve vir com scripts de console de ponto de entrada para / usr / local / bin / pylint2 e / usr / local / bin / pylint3. Isso deve ser considerado um bug.

O que se segue não funciona; ainda funciona pylint2:

python3 -m pylint p3file.py

Segue-se o que tenho usado com sucesso:

python2 /usr/local/bin/pylint p2file.py
python3 /usr/local/bin/pylint p3file.py
    
por Curt 08.03.2017 / 22:44
0

Isto é em resposta a uma boa resposta de simons. Eu apenas pensei sobre isso de uma maneira diferente e achei que poderia ser útil para aqueles que buscavam soluções para várias versões do python / pylint.

Instalar o pylint para 3.xe manter o padrão 2.7 ou vice-versa é feito facilmente usando virtualenv.

Crie seu ambiente virtual. no seu env enquanto estiver ativado

    pip install pylint

aqui você pode descobrir onde seu env colocou seu python e o pylint por

    which pylint
    #/home/$USER/Desktop/python/awesomeSauce/bin/pylint

e depois

    which python
    #/home/$USER/Desktop/python/awesomeSauce/bin/python

Então é só uma questão de configurar seu ide para usar esse caminho de linting e / ou caminho de python. Eu sei que funciona com o Sublime3, então vou usar isso no exemplo abaixo.

no Sublime no menu do cabeçalho superior, selecione Preferências > Configurações do pacote > Pylinter > Configurações - Usuário.

É apenas um objeto json. Definir o

    "python_bin": "python",
    // to the python path found earlier by 'which python'
    "python_bin": "/home/$USER/Desktop/python/awesomeSauce/bin/python",
    // dont for get the coma if it is the last element.
    // We also change the pylint_path from
    "pylint_path": null,
    // to
    "pylint_path": "/home/$USER/Desktop/python/awesomeSauce/bin/pylint",
    // sorry I cant make the formatting look any better.

Salve o arquivo. Eu também faço uma cópia do arquivo e o mantenho nesse diretório para que eu possa facilmente mudar copiando e colando essa configuração quando eu precisar desse linter. Quando eu não faço, eu apenas restaurei as configurações do Pylinter.sublime de volta ao padrão para o usuário e essa parece ser a maneira mais fácil que encontrei. Desculpe eu não sei os comandos do Windows ou eu teria colocado lá.

    
por 09.03.2019 / 04:50

Tags