การติดตั้ง Pylint สำหรับ Python3 บน Ubuntu


31

ความเข้าใจของฉันคือPylintรุ่นล่าสุด(1.0.0 ตอนที่เขียนนี้) รองรับ Python 3 แต่ฉันไม่สามารถใช้งานบน Ubuntu แบบ 13 บิต 64.0 กับ Python 3.3 ได้

ฉันทำตามคำแนะนำในการติดตั้งบนไซต์ PyPiและ Pylint 1.0.0 ดูเหมือนว่าจะติดตั้งได้สำเร็จ ( pylint --versionคืน pylint 1.0.0) และทำงานกับรหัส Python 2.7 แต่รายงานข้อผิดพลาดทางไวยากรณ์เมื่อเห็นคำสั่งที่ไม่เฉพาะเจาะจงและเช่นนั้น

สิ่งที่ช่วยให้? มีคำแนะนำการติดตั้งพิเศษสำหรับ Pylint บน Ubuntu หรือไม่?

คำตอบ:


27

Python 2 และ 3 เป็นสัตว์แยกต่างหาก หากคุณติดตั้งสคริปต์ลงในแพ็คเกจไซต์หนึ่งเวอร์ชันคุณจะไม่ได้ติดตั้งสคริปต์ลงในอีกแพ็คเกจหนึ่ง

ฉันจะติดตั้งผ่าน pip แต่คุณจะต้องใช้ pip เวอร์ชันที่ถูกต้อง

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

สิ่งนี้จะแทนที่รุ่น 2.7 ของคุณ เราสามารถยืนยันสิ่งนี้ได้โดยการตรวจสอบ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')()
    )

ยิ่งใหญ่ ที่ได้ผล ฉันจะทราบได้อย่างไรว่าคำสั่งเหล่านั้นไม่ได้แทนที่รุ่น 2.7 ในเครื่องของฉัน ฉันต้องลบมันออกจาก 2.7 dist-packages จากนั้นรันคำสั่งอีกครั้ง
Jerrad Genson

3
@Oli ดังนั้นถ้าฉันติดตั้ง pylint สำหรับ python 3 แล้วเวอร์ชัน python 2 ที่เป็นค่าเริ่มต้นจะไม่ทำงาน?
sayth

5
ผมพบว่ามีรุ่นใหม่ (เหมือนงูหลาม 3.5 ฯลฯ พฤศจิกายน 2016) นอกจากนี้ยังมี pylint3 sudo apt install pylint3ซึ่งคุณสามารถติดตั้งกับ:
Rick Henderson

21

ความคิดเห็นของ @sayth ต่อคำตอบที่ยอมรับคือสิ่งที่ดึงฉันมาที่นี่ - ฉันเขียนทั้งสคริปต์ python 2 และ python 3 และฉันต้องการตรวจสอบกับชุดกฎที่ถูกต้อง การติดตั้ง pylint โดยใช้pip3 install pylintเขียนสคริปต์สั้น ๆ/usr/local/binที่เรียกใช้ตัวแปล python3 และดูเหมือนว่าดังนั้นสมมติว่าไฟล์ทั้งหมดที่จะตรวจสอบเป็นสคริปต์ python 3

เพื่อหลีกเลี่ยงปัญหานี้ฉันมีไฟล์ต่อไปนี้:

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

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

แล้วเพราะฉันชอบใช้ pylint โดยตรงจากเมนู "คำสั่ง Build" ของ Geany และฉันไม่สามารถระบุคำสั่งต่าง ๆ สำหรับสคริปต์ python 2 และ python 3 ได้ฉันก็มี ~/bin/pylint:

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

ซึ่งยื้อรุ่นที่ถูกต้องโดยการดม Shebang

ไม่สมบูรณ์แบบแน่นอน แต่ใช้งานได้และอาจมีประโยชน์สำหรับผู้อื่น


11

ระบบนิเวศ pylint มีการเปลี่ยนแปลงตั้งแต่ (หลังจากถามคำถามนี้) และขณะนี้มี pylint แยกต่างหากสำหรับ python3 สามารถติดตั้งได้กับ:

sudo apt install pylint3

ทำงานกับฉันใน Ubuntu 16.04.2 LTS


1
มันก็ใช้ได้กับฉันเช่นกัน ติดตั้ง pylint สำหรับ python3 และยังคงเก็บ pylint สำหรับ python 2 ไว้
zhihong

คำตอบนี้เป็นคำตอบที่ถูกต้องสำหรับการติดตั้งทั่วทั้งระบบ
jII

7

ในฐานะที่เป็นวิธีการอื่นในการรัน pylint ทั้ง Python 2 และ 3 โปรดทราบว่าคุณสามารถใช้ Python -mเพื่อเรียกใช้โมดูลที่ติดตั้งบนระบบใน Python เวอร์ชันปัจจุบันดังนั้นคุณสามารถทำได้

$ python2 -m pylint
$ python3 -m pylint

เพื่อเลือกรายการที่คุณต้องการอย่างชัดเจน คุณสามารถทำให้สิ่งเหล่านี้เป็นนามแฝงหรือสคริปต์เปลือกถ้าคุณต้องการ


2

สาเหตุของปัญหาคือ pylint ควรมาพร้อมกับสคริปต์คอนโซลจุดเริ่มต้นสำหรับ / usr / local / bin / pylint2 และ / usr / local / bin / pylint3 สิ่งนี้ควรถูกพิจารณาว่าเป็นบั๊ก

ต่อไปนี้จะไม่ได้ทำงาน มันยังคงทำงาน pylint2:

python3 -m pylint p3file.py

ต่อไปนี้เป็นสิ่งที่ฉันใช้งานสำเร็จ:

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

0

นี่คือการตอบสนองต่อคำตอบที่ดีของ simons ฉันคิดเกี่ยวกับมันในวิธีที่แตกต่างและคิดว่ามันจะมีประโยชน์สำหรับผู้ที่กำลังมองหาวิธีแก้ปัญหาสำหรับ python / pylint หลายรุ่น

การติดตั้ง pylint สำหรับ 3.x และการรักษาค่าเริ่มต้น 2.7 หรือในทางกลับกันสามารถทำได้อย่างง่ายดายโดยใช้ virtualenv

สร้างสภาพแวดล้อมเสมือนของคุณ ใน env ของคุณในขณะที่เปิดใช้งาน

    pip install pylint

ที่นี่คุณสามารถทราบได้ว่า env ของคุณวางไพ ธ อนและไพลินไว้ที่ใด

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

แล้ว

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

จากนั้นเป็นเพียงเรื่องของการตั้งค่า IDE ของคุณเพื่อใช้เส้นทางขุยนั้นและ / หรือเส้นทางหลาม ฉันรู้ว่ามันใช้งานได้กับ Sublime3 ดังนั้นฉันจะใช้มันในตัวอย่างด้านล่าง

ใน Sublime ในเมนูส่วนหัวด้านบนเลือกการตั้งค่า> การตั้งค่าแพคเกจ> Pylinter> การตั้งค่า - ผู้ใช้

มันเป็นเพียงวัตถุ json ตั้งค่า

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

บันทึกไฟล์ ฉันยังทำสำเนาของไฟล์และเก็บไว้ในไดเรกทอรี venv เพื่อให้ฉันสามารถสลับได้อย่างง่ายดายโดยการคัดลอกและวาง config นี้เมื่อฉันต้องการ linter นี้ เมื่อฉันไม่ฉันเพิ่งรีเซ็ต Pylinter.sublime-settings กลับไปเป็นค่าเริ่มต้นสำหรับผู้ใช้และดูเหมือนจะเป็นวิธีที่ง่ายที่สุดที่ฉันพบ ขออภัยฉันไม่รู้คำสั่ง windows หรือฉันจะใส่ไว้ในนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.