标签: pylint

禁用所有`pylint`'Convention'消息

背景

我发现它pylint很有用,但我也发现它非常没有文档记录,输出结构很痛苦,缺乏直观的界面.

我想使用pylint,但它不断抽出一些荒谬的"常规"消息,例如C: 2: Line too long (137/80)等等.

如果我可以禁用这些,那么pylint对我来说会更有用.如何禁用这些"约定"消息?

我自己的努力

我试图把disable-msg=C301~/.pylintrc(它被加载,因为当我把有错误pylint抱怨),我的理解是基于pylint的包目录下运行此命令(文档中的"行太长"的消息,可以发现会对人好点):

$ grep"行太长"**/*.py checkers/format.py:'C0301':('行太长(%s /%s)',

但这disable-msg没有任何作用.我将convention使用该disable-msg-cat=命令禁用整个类别,但是没有任何迹象表明我可以找到convention该命令的类别标识符- 直观disable-message-cat=convention无效.

在这个问题上,我非常有必要指出一些方向.

谢谢.

布赖恩

python pylint

17
推荐指数
1
解决办法
7531
查看次数

如何修复pylint警告"Abstract class not referenced"?

我有一个Python类,它为几个方法引发了"NotImplementedError",并且该类由其他一些在自己的文件中定义的类继承.

当我在具有抽象类的文件上运行Pylint时,它总是抱怨"Abstract class not referenced".我想知道只是Pylint是偏执狂还是实际上我需要修理它?

python warnings abstract-class pylint

17
推荐指数
2
解决办法
4367
查看次数

Pylint:相对导入应该是

我正在用Pylint检查一个模块.该项目具有以下结构:

/builder
    __init__.py
    entity.py
    product.py
Run Code Online (Sandbox Code Playgroud)

在产品中我导入如下的实体:

from entity import Entity
Run Code Online (Sandbox Code Playgroud)

但是Pylint感叹道:

************* Module builder.product
W:  5,0: Relative import 'entity', should be 'builder.entity'
Run Code Online (Sandbox Code Playgroud)

但是from builder.entity import Entity无法识别包,from ..builder.entity import Entity也无法正常工作.Pylint在抱怨什么?谢谢

python pylint

17
推荐指数
2
解决办法
9312
查看次数

Python全局关键字与Pylint W0603

Pylint W0603说:

使用全局声明.在使用"global"语句更新全局变量时使用.PyLint只是试图阻止这种用法.这并不意味着你不能使用它!

我想知道为什么会这样?是否有更多Pythonic方法在函数内修改不可变的模块范围变量?是否建议将它们打包在像字典这样的可变变量中?或者可能将整个模块变成课堂?

在我看来,当变量被建议为"私有"(以_或__为前缀)时,此警告应该消失.

python global global-variables pylint

17
推荐指数
2
解决办法
2万
查看次数

如何在Syntastic for Vim中将Python max允许的行长度设置为120?

我正在为Vim 使用python-mode,我更喜欢那里有120个字符行而不是PEP8标准中定义的stark 80.

在python模式下,这很容易.我只是将以下内容添加到〜/ .vimrc中:

" Pylint configuration file
let g:pymode_lint_config = '$HOME/.pylint.rc'
let g:pymode_options_max_line_length=120
Run Code Online (Sandbox Code Playgroud)

这很好用,但是,我还想使用精湛的Syntastic插件来检查各种其他类型的语法(例如,foodcritic的Chef配方).

不幸的是,Syntastic也做了Python linting,因此它现在开始抱怨我的120个字符行.有什么类似的东西,我可以做到这一点,以使它停止抱怨我稍长的线?

python vim pylint python-mode syntastic

17
推荐指数
2
解决办法
2万
查看次数

Pylint:覆盖单个文件中的max-line-length

是否可以更改max-line-length项目中一个文件的设置(同时执行rc文件中定义的所有其他检查)?

理想情况下,它应该像内联pylint: disable=x注释一样.

我已尝试将此行放在模块级别:

# pylint: max-line-length=240
Run Code Online (Sandbox Code Playgroud)

PyLint无法识别它:

my_file.py:15: [E0011(unrecognized-inline-option), ] Unrecognized file option 'max-line-length
Run Code Online (Sandbox Code Playgroud)

编辑:我知道我可以line-too-long完全禁用检查,但说实话我想避免这样做,以防有人试图扩展这个模块并添加比现在更长的行.

python pylint

17
推荐指数
4
解决办法
2万
查看次数

Silence PyLint警告字符串插值的未使用变量

say模块为Python带来字符串插值,如下所示:

import say

def f(a):
    return say.fmt("The value of 'a' is {a}")
Run Code Online (Sandbox Code Playgroud)

但是,PyLint抱怨变量'a'从未使用过.这是一个问题,因为我的代码say.fmt广泛使用.我该如何沉默这个警告?

python pylint unused-variables

17
推荐指数
4
解决办法
2万
查看次数

Pylint:禁用特定文件夹的特定警告

我们有一个像这样的Python项目:

project/
??? .pylintrc
??? module1.py
??? module2.py
??? tests/
    ??? test_module1.py
    ??? test_module2.py
Run Code Online (Sandbox Code Playgroud)

我们的单元和功能测试位于名为的文件夹中tests/.当谈到测试pylint的警告missing-docstring,invalid-name并且protected-access是不相关的.另一方面,这些警告对项目中的实际代码非常有用.

我的问题是,它是否可以添加会忽略missing-docstring,invalid-name并且protected-access.pylintrc应用到模块的-file tests/-folder

如果可能,我们不希望将#这些警告的-disables 添加到文件夹内的每个测试模块.

python pylint

17
推荐指数
1
解决办法
2788
查看次数

为什么说模块pygame没有init成员?

以下是我的代码:

import pygame
pygame.init()
Run Code Online (Sandbox Code Playgroud)

我很困惑,因为如果我尝试运行该文件,那么似乎没有问题,但是pylint说如下:

E1101:模块'pygame'没有'init'成员

我已经彻底搜索了这个"错误"的解决方案.在我发现的每个相关案例中,解决方案是确保我没有创建名为"pygame"的另一个文件或文件夹,因为在这种情况下,我只是导入我自己的文件或文件夹.但是,我还没有创建一个名称甚至接近"pygame"的文件夹或文件,所以我不知道问题是什么.

如前所述,似乎我能够毫无问题地运行该文件,但我是新手,并且这样的错误使我在学习过程中感到困惑.

我在Visual Studio Code中编写代码,我使用python 3.6,我正在使用pygame 1.9.3并更新了我的pylint.任何帮助,将不胜感激.

python pygame pylint

17
推荐指数
7
解决办法
1万
查看次数

在日志记录函数中使用惰性%格式 pylint 错误消息

我有一个 python 函数,如下所示,当启用 pylint 进行代码扫描时,它会抛出一个惰性格式错误。

def modify_response(data):
    try:
        response = {}
        response["User_ID"] = data[0]["User_ID"]["S"]
        response["Triggered_Timestamp"] = data[0]["Triggered_Timestamp"]["S"]
        return response
    except Exception as e:
        logging.exception("ModifyResponseError: {}".format(e))
        raise ModifyResponseError(json.dumps({"httpStatus": 501,"message": internal_error_message}))
Run Code Online (Sandbox Code Playgroud)

python error-handling formatting logging pylint

17
推荐指数
1
解决办法
2万
查看次数