Python3 için Pylint'i Ubuntu'da Kurmak


31

Anladığım kadarıyla Pylint'in (bu yazı sırasında 1.0.0) en son sürümünün Python 3'ü desteklediği, ancak 64-bit Ubuntu 13.04 ile Python 3.3 ile çalışmasını sağlayamadığım.

PyPi sitesindeki kurulum talimatlarını takip ettim ve Pylint 1.0.0 başarıyla kuruldu ( pylint --versionpylint 1.0.0'i döndürüyor) ve Python 2.7 koduyla çalışıyor gibi görünüyor , ancak yerel olmayan ifadeler ve benzerleri gördüğünde bir sözdizimi hatası rapor ediyor.

Ne verir? Ubuntu'da Pylint için özel kurulum talimatları var mı?

Yanıtlar:


27

Python 2 ve 3 ayrı canavarlardır. Bir sürümün site paketlerine bir komut dosyası yüklerseniz, diğerine yüklemezsiniz.

Pip aracılığıyla kurardım, ama doğru pip sürümüne ihtiyacınız olacak.

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

Bu 2.7 sürümün yerini alacak . Bunu kontrol ederek onaylayabiliriz 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')()
    )

Harika. Bu çalışır. Ancak, bu komutların makinemdeki 2.7 versiyonunun yerine geçmediğini not edeceğim. 2.7 paketten çıkarmak zorunda kaldım ve komutları tekrar çalıştırdım.
Jerrad Genson

3
@Oli yani eğer python 3 için pylint yüklersem, o zaman varsayılan python 2 versiyonu işe yaramaz mı?
saat

5
Yeni sürümlerle (Python 3.5 vb. Kasım 2016'dan itibaren) birlikte yükleyebileceğiniz bir pylint3 olduğunu öğrendim sudo apt install pylint3.
Rick Henderson,

21

@sayth'ın kabul edilen cevaba olan yorumu beni buraya çeken şeydi - Hem python 2 hem python 3 scriptleri yazdım ve her ikisini de doğru kurallara karşı kontrol edebilmek istiyorum. pylint'i yüklemek , python3 yorumlayıcısını çağıran pip3 install pylintkısa bir komut dosyası yazar /usr/local/binve bu nedenle, kontrol edilecek tüm dosyaların python 3 komut dosyaları olduğunu varsayar gibi görünür.

Bu soruna geçici bir çözüm bulmak için şimdi aşağıdaki dosyaları var:

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

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

Ben Geany yönettiği "Yapı Komutları" menüsünden doğrudan kullanım PyLint nasıl ve ben piton 2 ve piton 3 komut dosyaları için farklı komutlar belirleyemezsiniz çünkü daha sonra, i de var ~/bin/pylint:

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

hangi shebang koklayarak doğru sürümünü gönderir.

Mükemmel değil, kesinlikle, ama işlevsel ve belki de diğerleri için faydalı.


11

Pylint ekosistemi o zamandan beri değişti (bu soru sorulduktan sonra) ve şimdi python3 için ayrı bir pilsint var. İle yüklenebilir:

sudo apt install pylint3

Benim için Ubuntu'da çalıştı 16.04.2 LTS


1
bu benim için de işe yarıyor. Python3 için yüklü pylint ve hala python 2 için pylint'i saklayın
zhihong 12:17

Bu cevap sistem genelinde kurulum için doğru cevaptır.
Nisanda 18

7

Python 2 ve 3'te pylint çalıştırmak için başka bir yöntem olarak, Python'un -manahtarını sistemde yüklü bir modülü çalıştırmak için Python'un güncel sürümünde kullanabileceğinizi unutmayın.

$ python2 -m pylint
$ python3 -m pylint

açıkça hangisini istediğinizi seçmek için. İsterseniz bunları takma adlar veya kabuk komut dosyaları haline getirebilirsiniz.


2

Sorunun kökü, pylint'in / usr / local / bin / pylint2 ve / usr / local / bin / pylint3 için giriş noktası konsol komut dosyaları ile gelmesi gerektiğidir. Bu bir hata olarak kabul edilmelidir.

Aşağıdaki gelmez değil çalışmak; hala pylint2 çalıştırıyor:

python3 -m pylint p3file.py

Aşağıdakiler başarıyla kullanıyorum:

python2 /usr/local/bin/pylint p2file.py
python3 /usr/local/bin/pylint p3file.py

0

Bu simons iyi cevap cevaptır. Sadece farklı bir şekilde düşündüm ve python / pylint'in çoklu versiyonları için çözüm arayanlar için faydalı olabileceğini düşündüm.

3.x için pylint'in kurulması ve 2.7'nin varsayılan ya da tam tersi tutulması sanalenv kullanılarak kolayca yapılabilir.

Sanal ortamınızı oluşturun. aktive edilmiş çalışma sırasında env'nizde

    pip install pylint

burada env'nizin python ve pylint'inizi nereye koyduğunu anlayabilirsiniz.

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

ve sonra

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

Öyleyse, bu ide yolunuzu ve / veya python yolunu kullanmak için ide'nizi kurma meselesidir. Sublime3 ile çalıştığını biliyorum, bu yüzden aşağıdaki örnekte bunu kullanmıyorum.

Üst başlık menüsünde Sublime'da Tercihler> Paket Ayarları> Pylinter> Ayarlar - Kullanıcı'yı seçin.

Bu sadece bir json nesnesi. Yı kur

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

Dosya 'yı kaydet. Ayrıca dosyanın bir kopyasını alıyorum ve bu venv dizininde tutuyorum, böylece bu linter'e ihtiyacım olduğunda bu yapılandırmayı kopyalayıp yapıştırarak kolayca değiştirebiliyorum. Yapmadığımda Pylinter.sublime ayarlarını kullanıcı için varsayılan ayarlara geri döndürdüm ve bu bulduğum en kolay yol gibi görünüyor. Üzgünüm windows komutlarını bilmiyorum ya da onları oraya koyardım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.