当前位置: 首页>>技术教程>>正文


在Ubuntu上为Python3安装Pylint

,

问题描述

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

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

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

最佳答案

Python 2和3是不同的野兽。如果您将脚本安装到一个版本的site-packages中,则不会将其安装到另一个版本中。

我会通过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')()
    )

次佳答案

@sayth对接受的答案的评论吸引了我-我同时编写了python 2和python 3脚本,并且希望能够对照正确的规则集进行检查。使用pip3 install pylint安装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的”Build Commands”菜单中使用pylint,并且我无法为python 2和python 3脚本指定不同的命令,所以我也有~/bin/pylint

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

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

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

第三种答案

sudo apt install pylint3

在Ubuntu 16.04.2 LTS上为我工作

第四种答案

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

$ python2 -m pylint
$ python3 -m pylint

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7784.html,未经允许,请勿转载。