在Ubuntu上为Python3安装Pylint


31

我的理解是Pylint的最新版本(在撰写本文时为1.0.0)已支持Python 3,但我无法使其在具有Python 3.3的64位Ubuntu 13.04上运行。

我按照PyPi网站上的安装说明进行操作,并且Pylint 1.0.0似乎已成功安装(pylint --version返回pylint 1.0.0),并且可以使用Python 2.7代码,但是当它看到非本地语句等时,它报告语法错误。

是什么赋予了?在Ubuntu上是否有针对Pylint的特殊安装说明?

Answers:


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所以如果我为python 3安装pylint,那么默认的python 2版本不起作用?
2013年

5
我发现,在新版本中(像Python 3.5等2016年11月的)也有,你可以安装一个pylint3: sudo apt install pylint3
瑞克·亨德森

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

然后,因为我喜欢直接从Geany的“构建命令”菜单中使用pylint,而且我无法为python 2和python 3脚本指定不同的命令,所以我也有 ~/bin/pylint

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

通过嗅探shebang来分发正确的版本。

当然,它不是完美的,但是功能性的,也许对其他人有用。


11

自从问了这个问题之后,pylint生态系统就发生了变化,现在有一个单独的python3 pylint。可以安装:

sudo apt install pylint3

在Ubuntu 16.04.2 LTS上为我工作


1
这对我也适用。为python3安装了pylint,并且仍然为python 2保留了pylint。–
zhihong

对于系统范围的安装,此答案是正确的答案。
JII

7

作为在Python 2和3上运行pylint的另一种方法,请注意,您可以使用Python的-m开关来运行当前版本的Python中系统上安装的模块,因此您可以

$ python2 -m pylint
$ python3 -m pylint

明确选择您想要的那个。如果需要,可以将它们设置为别名或shell脚本。


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的解决方案的人可能有用。

使用virtualenv可以轻松完成3.x的pylint的安装并保持2.7的默认值或反之。

创建您的虚拟环境。在您的环境中激活运行

    pip install pylint

在这里,您可以找出您的环境将python和pylint放在哪里

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

然后

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

然后,只需设置您的想法以使用该插入路径和/或python路径即可。我知道它可与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目录中,以便在需要此linter时通过复制和粘贴此配置轻松进行切换。当我不这样做时,我只是将Pylinter.sublime-settings重新设置为用户的默认设置,这似乎是我找到的最简单的方法。对不起,我不知道Windows命令,否则我会把它们放在那里。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.