答案1
Python 2 和 Python 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
@sayth 对已接受答案的评论吸引了我来到这里——我编写了 python 2 和 python 3 脚本,并且我希望能够根据正确的规则集检查它们。使用安装 pylintpip3 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来发送正确的版本。
当然,它并不完美,但它实用,并且可能对其他人有用。
答案3
自从提出这个问题以来,pylint 生态系统发生了变化,现在有一个单独的 pylint 用于 python3。它可以通过以下方式安装:
sudo apt install pylint3
在 Ubuntu 16.04.2 LTS 上对我有用
答案4
问题的根源在于 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