Menginstal Pylint untuk Python3 di Ubuntu

31

Pemahaman saya adalah bahwa rilis terbaru Pylint (1.0.0 pada saat penulisan ini) memiliki dukungan untuk Python 3, tetapi saya tidak dapat membuatnya bekerja pada 64-bit Ubuntu 13.04 dengan Python 3.3.

Saya mengikuti petunjuk instalasi di situs PyPi , dan Pylint 1.0.0 tampaknya berhasil diinstal ( pylint --versionmengembalikan pylint 1.0.0), dan bekerja dengan kode Python 2.7, tetapi melaporkan kesalahan sintaks ketika melihat pernyataan nonlocal dan semacamnya.

Apa yang menyebabkannya? Apakah ada instruksi instalasi khusus untuk Pylint di Ubuntu?

Jerrad Genson
sumber

Jawaban:

27

Python 2 dan 3 adalah binatang yang terpisah. Jika Anda menginstal skrip ke dalam paket situs dari satu versi, Anda tidak menginstalnya ke yang lain.

Saya akan menginstalnya melalui pip, tetapi Anda akan membutuhkan versi pip yang tepat.

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

Ini akan menggantikan versi 2.7 Anda. Kami dapat mengkonfirmasi ini dengan memeriksa 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')()
    )
Oli
sumber
Besar. Itu bekerja. Saya akan mencatat, bagaimanapun, bahwa perintah-perintah itu tidak menggantikan versi 2.7 di mesin saya. Saya harus menghapusnya dari paket-paket 2,7 dist, dan kemudian jalankan kembali perintah.
Jerrad Genson
3
@Oli jadi jika saya menginstal pylint untuk python 3 maka versi default python 2 tidak berfungsi?
sayth
5
Saya menemukan bahwa dengan versi yang lebih baru (sebagai dari Python 3,5 dll Nov 2016) ada juga pylint3 yang dapat Anda install dengan: sudo apt install pylint3.
Rick Henderson
21

Komentar @sayth terhadap jawaban yang diterima adalah yang membuat saya tertarik di sini - saya menulis kedua skrip python 2 dan python 3, dan saya ingin dapat mengecek baik terhadap aturan yang benar. menginstal pylint menggunakan pip3 install pylintmenulis skrip pendek /usr/local/binyang memanggil interpreter python3, dan tampaknya, oleh karena itu menganggap semua file yang akan diperiksa adalah skrip python 3.

untuk mengatasi ini, saya sekarang memiliki file berikut:

~/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')()
    )

dan ~/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')()
    )

dan kemudian, karena saya suka menggunakan pylint langsung dari menu "Build Commands" Geany, dan saya tidak bisa menentukan perintah yang berbeda untuk skrip python 2 dan python 3, saya juga punya ~/bin/pylint:

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

yang mengirimkan versi yang benar dengan mengendus shebang.

Tidak sempurna, tentu saja, tetapi fungsional dan, mungkin, bermanfaat bagi orang lain.

simon
sumber
11

Ekosistem pylint telah berubah sejak (setelah pertanyaan ini diajukan), dan sekarang ada pylint yang terpisah untuk python3. Itu dapat diinstal dengan:

sudo apt install pylint3

Bekerja untuk saya di Ubuntu 16.04.2 LTS

Phil
sumber
1
ini bekerja untuk saya juga. Menginstal pylint untuk python3, dan masih menyimpan pylint untuk python 2.
zhihong
Jawaban ini adalah jawaban yang benar untuk pemasangan di seluruh sistem.
Juli
7

Sebagai metode lain untuk menjalankan pylint pada Python 2 dan 3, perhatikan bahwa Anda dapat menggunakan -msakelar Python untuk menjalankan modul yang diinstal pada sistem dalam versi Python saat ini, sehingga Anda dapat melakukan

$ python2 -m pylint
$ python3 -m pylint

untuk secara eksplisit memilih yang mana yang Anda inginkan. Anda bisa menjadikan ini menjadi alias atau skrip shell jika Anda mau.

Soren Bjornstad
sumber
2

Akar masalahnya adalah pylint harus datang dengan skrip konsol titik masuk untuk / usr / local / bin / pylint2 dan / usr / local / bin / pylint3. Ini harus dianggap sebagai bug.

Berikut ini tidak berfungsi; masih menjalankan pylint2:

python3 -m pylint p3file.py

Berikut ini adalah apa yang berhasil saya gunakan:

python2 /usr/local/bin/pylint p2file.py
python3 /usr/local/bin/pylint p3file.py
Singkat
sumber
0

Ini sebagai jawaban atas jawaban simons. Saya hanya memikirkannya dengan cara yang berbeda dan berpikir itu bisa berguna bagi mereka yang mencari solusi untuk beberapa versi python / pylint.

Menginstal pylint untuk 3.x dan mempertahankan 2.7 default atau sebaliknya mudah dilakukan menggunakan virtualenv.

Buat lingkungan virtual Anda. di env Anda saat diaktifkan jalankan

    pip install pylint

di sini Anda dapat mencari tahu di mana env Anda telah meletakkan python dan pylint Anda

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

lalu

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

Maka itu hanya masalah mengatur ide Anda untuk menggunakan jalur linting dan / atau jalur python. Saya tahu ini bekerja dengan Sublime3 jadi saya akan menggunakannya dalam contoh di bawah ini.

di Luhur di menu tajuk atas pilih Preferensi> Pengaturan Paket> Pylinter> Pengaturan - Pengguna.

Itu hanya objek json. Mengatur

    "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.

Simpan file. Saya juga membuat salinan file dan menyimpannya di direktori venv sehingga saya dapat dengan mudah beralih dengan menyalin dan menempel konfigurasi ini ketika saya membutuhkan linter ini. Ketika saya tidak melakukannya, saya hanya mengatur ulang pengaturan-Pylinter.sublime kembali ke default untuk pengguna dan itu tampaknya cara termudah yang saya temukan. Maaf saya tidak tahu perintah windows atau saya akan meletakkannya di sana.

tldr
sumber