4

我正在尝试将 SublimeLinter-pylint 安装到我的 Sublime Text 3 中。它告诉我按照说明进行操作,因为它(大概)找不到 lint.py (我在此之前尝试安装 Pylinter 并且结果付诸东流,所以我假设这是同样的问题)。

我已经查看了类似问题的其他答案,但它们不适用于我。

有人说要使用我正在做的 SublimeLinter。我已经安装了它,并且我在它上面安装的 PHP/JS linters 工作得很好。

然后它说要安装我已经使用 pip 完成的 pylint (duh)。作为参考,终端打印中的 pylint --version :

No config file found, using default configuration
pylint 1.2.1, 
astroid 1.1.1, common 0.62.0
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]

所以我有点失落。现在,当我尝试通过 Package Control 安装 SublimeLinter 时,它告诉我按照此处的安装说明进行操作。这告诉我必须按照此处提供的说明进行操作。我已经按照要求完成了,'hash - r which pylint' 什么也没打印。没有路径,没有错误,没有“找不到模块”,只是空白。'hash - r which asdfjkl' 会给出一个错误,所以据我所知,这是有效的,而且 pylint 也有效,正如我用 python 文件验证的那样。

从未有任何与 ST3 相关的事情如此令人困惑和烦人;我几乎已经放弃了这一点,并且将在没有 linter 的情况下继续进行(它是 python,所以至少调试还不错)。

有什么建议么?

4

2 回答 2

4

我想你只需要输入

which pylint

你应该看到类似的东西

/usr/bin/pylint

不知道hash -r应该做什么

于 2014-07-23T00:13:04.803 回答
2

我处理了配置 SublimeLinter 的 pylint 插件的类似问题。从我的输出中pylint --version我看到您安装了 pylint 的 py3 版本(大概是 viapip3 install pylint或类似的)。

默认情况下,SublimeLinter 正在寻找 pylint 的 py2 版本。如果您现在安装了 pylint 的 py2 版本(即pip2 install pylint),它可能会工作。无论如何,一般来说,为您将要编写的代码使用适当版本的 pylint 很重要,否则您会得到错误的 lint 报告。

理论上,pylint 插件应该能够检测到这一点。如果没有,您应该编辑 SublimeLinter 的设置并添加一个 python 元设置来指示请求的 python 版本(即"@python": 3.4)。请参阅文档@ https://sublimelinter.readthedocs.org/en/latest/meta_settings.html#python-meta-setting

实际上,SublimeLinter-pylint 目前对所有这一切都非常棘手。然而,SublimeLinter 插件可能承担了大部分责任。请参阅问题@https ://github.com/SublimeLinter/SublimeLinter-pylint/issues/12

我确实注意到,当安装了两个版本的 pylint 时,SublimeLinter-pylint 似乎运行良好。支持论坛中的其他人在这方面也取得了类似的成功。当然,同一个 bin 文件夹中只能有一个 pylint 二进制文件,但没关系。

我运行了以下内容:

pip2 install --user -I pylint
pip3 install --user -I pylint

此外,FYIhash用于搜索 PATH 上的命令。例如,hash python && echo true || echo false将打印 true。同样,hash wackpython && echo true || echo false将打印错误。

如果您sudo rm /usr/bin/python删除 python 并立即运行type python && echo true || echo false它将打印 true 因为python仍然散列到/usr/bin/python.

hash -r如果你改为运行then删除 python后type python && echo true || echo false,它将打印 false。那是因为hash -r转储了所有记住的位置。

我不完全确定您为什么被指示执行hash -r,但请放心,没有输出是预期的输出。

于 2015-04-25T13:34:00.993 回答