Cài đặt Pylint cho Python3 trên Ubuntu


31

Tôi hiểu rằng bản phát hành Pylint mới nhất (1.0.0 tại thời điểm viết bài này) đã hỗ trợ Python 3, nhưng tôi không thể làm cho nó hoạt động trên Ubuntu 13.04 64 bit với Python 3.3.

Tôi đã làm theo hướng dẫn cài đặt trên trang web PyPi và Pylint 1.0.0 dường như đã được cài đặt thành công ( pylint --versiontrả về pylint 1.0.0) và hoạt động với mã Python 2.7, nhưng nó báo lỗi lỗi cú pháp khi thấy các câu lệnh không nhắm mục tiêu và như vậy.

Đưa cái gì? Có hướng dẫn cài đặt đặc biệt nào cho Pylint trên Ubuntu không?

Câu trả lời:


27

Python 2 và 3 là những con thú riêng biệt. Nếu bạn cài đặt tập lệnh vào gói trang web của một phiên bản, bạn sẽ không cài đặt tập lệnh vào phiên bản kia.

Tôi sẽ cài đặt nó thông qua pip, nhưng bạn sẽ cần phiên bản phù hợp của pip.

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

Điều này sẽ thay thế phiên bản 2.7 của bạn. Chúng tôi có thể xác nhận điều này bằng cách kiểm tra 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')()
    )

Tuyệt quá. Điều đó làm việc. Tuy nhiên, tôi sẽ lưu ý rằng các lệnh đó không thay thế phiên bản 2.7 trên máy của tôi. Tôi đã phải loại bỏ nó khỏi 2.7 gói, và sau đó chạy lại các lệnh.
Jerrad Genson

3
@Oli vậy nếu tôi cài pylint cho python 3 thì phiên bản python 2 mặc định không hoạt động?
sayth

5
Tôi phát hiện ra rằng với các phiên bản mới hơn (kể từ Python 3.5, v.v. Tháng 11 năm 2016) cũng có một pylint3 mà bạn có thể cài đặt với : sudo apt install pylint3.
Rick Henderson

21

Nhận xét của @sayth cho câu trả lời được chấp nhận là điều đã thu hút tôi ở đây - Tôi viết cả hai tập lệnh python 2 và python 3, và tôi muốn có thể kiểm tra một trong hai quy tắc chính xác. cài đặt pylint bằng cách pip3 install pylintviết một đoạn script ngắn để /usr/local/bingọi trình thông dịch python3 và do đó, giả sử tất cả các tệp cần kiểm tra là python 3 script.

để khắc phục điều này, bây giờ tôi có các tệp sau:

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

và sau đó, vì tôi thích sử dụng pylint trực tiếp từ menu "Build Commands" của Gean, và tôi không thể chỉ định các lệnh khác nhau cho tập lệnh python 2 và python 3, tôi cũng có ~/bin/pylint:

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

trong đó gửi phiên bản chính xác bằng cách đánh hơi shebang.

Không hoàn hảo, chắc chắn, nhưng chức năng và, có lẽ, hữu ích cho người khác.


11

Hệ sinh thái môn vị đã thay đổi kể từ khi (sau khi câu hỏi này được hỏi), và giờ đây đã có một môn vị riêng cho python3. Nó có thể được cài đặt với:

sudo apt install pylint3

Làm việc cho tôi trên Ubuntu 16.04.2 LTS


1
điều này làm việc cho tôi là tốt. Đã cài đặt pylint cho python3, và vẫn giữ pylint cho python 2.
zhihong

Câu trả lời này là câu trả lời đúng cho việc cài đặt trên toàn hệ thống.
jII

7

Là một phương pháp khác để chạy pylint trên cả Python 2 và 3, lưu ý rằng bạn có thể sử dụng -mchuyển đổi của Python để chạy mô-đun được cài đặt trên hệ thống trong phiên bản Python hiện tại, vì vậy bạn có thể làm

$ python2 -m pylint
$ python3 -m pylint

để chọn một cách rõ ràng cái nào bạn muốn. Bạn có thể biến chúng thành bí danh hoặc shell script nếu muốn.


2

Nguyên nhân của vấn đề là pylint phải đi kèm với các kịch bản bảng điều khiển điểm vào cho / usr / local / bin / pylint2 và / usr / local / bin / pylint3. Điều này nên được coi là một lỗi.

Những điều sau đây không hoạt động; nó vẫn chạy pylint2:

python3 -m pylint p3file.py

Sau đây là những gì tôi đã sử dụng thành công:

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

0

Đây là để đáp ứng với câu trả lời tốt simons. Tôi chỉ nghĩ về nó theo một cách khác và nghĩ rằng nó có thể hữu ích cho những người tìm kiếm giải pháp cho nhiều phiên bản python / pylint.

Cài đặt pylint cho 3.x và giữ 2.7 mặc định hoặc ngược lại dễ dàng được thực hiện bằng virtualenv.

Tạo môi trường ảo của bạn. trong env của bạn trong khi chạy kích hoạt

    pip install pylint

ở đây bạn có thể tìm ra nơi env của bạn đã đặt con trăn và con chó của bạn bằng cách

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

và sau đó

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

Sau đó, chỉ là vấn đề thiết lập ide của bạn để sử dụng đường dẫn linting và / hoặc đường python. Tôi biết nó hoạt động với Sublime3 nên Ill sử dụng nó trong ví dụ dưới đây.

trong Sublime trong menu tiêu đề trên cùng, chọn Tùy chọn> Cài đặt gói> Pylinter> Cài đặt - Người dùng.

Nó chỉ là một đối tượng json. Đặt

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

Lưu các tập tin. Tôi cũng tạo một bản sao của tập tin và giữ nó trong thư mục venv đó để tôi có thể dễ dàng chuyển đổi bằng cách sao chép và dán cấu hình này khi tôi cần người nói dối này. Khi tôi không, tôi chỉ đặt lại cài đặt Pylinter.sublime về mặc định cho người dùng và đó có vẻ là cách dễ nhất tôi đã tìm thấy. Xin lỗi tôi không biết các lệnh windows hoặc tôi sẽ đặt chúng ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.