pylint 1.4 报告所有 C 扩展上的 E1101(无成员)

2024-01-03

我们一直是pylint。它的静态分析已经成为我们所有 python 项目的关键部分,并且节省了大量的时间来追踪隐藏的错误。但从 1.3 -> 1.4 升级后,几乎所有编译的 c 扩展都会导致 E1101(no-member) 错误。

之前运行完美的项目pylint1.3 现在几乎每个 C 扩展成员都抱怨 E1101。我们被迫禁用 E1101 错误,但这大大降低了pylint.

例如,这个完全有效的使用lxml package

r"""valid.py: demonstrate pylint 1.4 error"""
from lxml import etree
print etree.Element('mydoc')

运行这个pylint,它报告:

$ pylint -rn valid.py
No config file found, using default configuration
************* Module valid
E:  3, 6: Module 'lxml.etree' has no 'Element' member (no-member)

但这是完全有效的:

$ python valid.py
<Element mydoc at 7fddf67b1ba8>

这就是事情变得非常奇怪的地方。极少数 C 扩展似乎可以正常工作pylint, e.g.:

r"""valid2.py: this one works fine"""
import sqlite3
print sqlite3.version

$ pylint -rn valid2.py
No config file found, using default configuration

我的问题是,还有其他人目睹过这一幕吗?如果是这样,您愿意分享您的解决方法/解决方案吗?

我们尝试过创建插件来抑制这些警告 (http://docs.pylint.org/plugins.html#enter-plugin http://docs.pylint.org/plugins.html#enter-plugin),但是我们很难弄清楚文档的正确性和反面性——而且astroid基类非常复杂,我们无法理解它。

对于真正的奖励积分(以及我们永恒的感激之情),我们很想了解发生了什么变化pylint。我们很乐意修复代码(或者至少为 C 扩展作者发布最佳实践文档)以满足pylint.

平台详情

$ pylint --version
No config file found, using default configuration
pylint 1.4.0,
astroid 1.3.2, common 0.63.2
Python 2.7.5 (default, Jul  1 2013, 18:09:11)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]

发布问题后不久,我找到了答案。事实上,这一改变是作为一种安全措施而有意进行的。 Pylint 导入模块以有效识别有效的方法和属性。我们决定导入不属于 python stdlib 的 C 扩展存在安全风险,并且可能引入恶意代码。

这是在 Astroid 1.3.1 版本中完成的https://mail.python.org/pipermail/code-quality/2014-November/000394.html https://mail.python.org/pipermail/code-quality/2014-November/000394.html

仅来自可信来源(标准库)的 C 扩展 加载到正在检查的 Python 进程中以实时构建 AST 模块。

如果您想在导入非 stdlib c 扩展的项目上使用 pylint,有四种解决方案。

1)使用禁用安全--unsafe-load-any-extension=y命令行选项。此功能未记录并归类为隐藏选项(https://mail.python.org/pipermail/code-quality/2014-November/000439.html https://mail.python.org/pipermail/code-quality/2014-November/000439.html).

2)使用禁用安全pylint.rc环境unsafe-load-any-extensions=yes。与选项 1 相比,建议使用此选项,并在默认 pylint.rc 文件(使用创建的--generate-rcfile).

3) 具体列出您信任的 pylint 加载的包或模块名称pylint.rc文件使用extension-pkg-whitelist= option.

4) 创建一个插件来操作 AST(我不知道如何实现这一点——但它经常在 pylint 邮件列表上讨论)。

我们选择了选项 3。我们将以下行添加到我们的项目中pylint.rc file:

extension-pkg-whitelist=lxml
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pylint 1.4 报告所有 C 扩展上的 E1101(无成员) 的相关文章

  • Pygame读取MIDI输入

    我参考了Pygame MIDI 文档 https www pygame org docs ref midi html and 这段代码 https stackoverflow com questions 62983509 pygame mi
  • 查找 with: 块中定义的函数

    这是一些代码理查德 琼斯的博客 http www mechanicalcat net richard log Python Something I m working on 3 with gui vertical text gui labe
  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • 将 pandas 数据框中的列减去其第一个值

    我需要将 pandas 数据帧的一列中的所有元素减去其第一个值 在这段代码中 pandas 抱怨 self inferred type 我猜这是循环引用 df Time df Time df Time 0 在这段代码中 pandas 抱怨为
  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • Sorted(key=lambda: ...) 背后的语法[重复]

    这个问题在这里已经有答案了 我不太明白背后的语法sorted 争论 key lambda variable variable 0 Isn t lambda随意的 为什么是variable在看起来像的内容中陈述了两次dict 我认为这里的所有
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • 将一个时间序列插入到 pandas 中的另一个时间序列中

    我有一组定期测量的值 说 import pandas as pd import numpy as np rng pd date range 2013 01 01 periods 12 freq H data pd Series np ran
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • FastText - 由于 C++ 扩展未能分配内存,无法加载 model.bin

    我正在尝试使用 FastText Python APIhttps pypi python org pypi fasttext https pypi python org pypi fasttext虽然 据我所知 此 API 无法加载较新的
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • python中的sys.stdin.fileno()是什么

    如果这是非常基本的或之前已经问过的 我很抱歉 我用谷歌搜索但找不到简单且令人满意的解释 我想知道什么sys stdin fileno is 我在代码中看到了它 但不明白它的作用 这是实际的代码块 fileno sys stdin filen
  • WindowsError:[错误 5] 访问被拒绝

    我一直在尝试终止一个进程 但我的所有选项都给出了 Windows 访问被拒绝错误 我通过以下方式打开进程 一个python脚本 test subprocess Popen sys executable testsc py 我想杀死那个进程
  • 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

    我正在尝试使用 Scikit Learn 的 OneHotEncoder 将 Pandas DataFrame 中包含字符串的列替换为 one hot 编码的等效项 我的下面的代码不起作用 from sklearn preprocessin

随机推荐

  • 将列表数组转换为 Keras 输入

    给定一个以下形式的数组 array list 21603 125 737 579 2065 10399 1175 0 0 0 list 1896 3917 498 296 1452 523 754 450 3795 341 dtype ob
  • 子类型字段编号顺序依赖于 protobuf-net

    我可以看到 protobuf net 似乎需要在运行类型模型上具有确定性排序 有什么好的策略可以使用而不需要在每个类上都有属性来进行排序 如果您是通过属性实现的 protobuf 本身会如何执行 model Add typeof IMess
  • 在github工作流程中运行超时命令

    我有一个类似于下面代码的 GitHub 操作 我有一个文件本来打算永远运行 但在需要时会被用户中断 我尝试过使用timeout但它不起作用 并给出了一些奇怪的消息 对此的一个小警告是 如果该过程超时 我希望这不会引发错误 以便操作继续并报告
  • WPF 中的 BitmapImage 会锁定文件

    I use Dim bmi As New BitmapImage New Uri fiInfo FullName UriKind Absolute bmi CacheOption BitmapCacheOption OnLoad 这不使用加
  • 使用 javascript 查找渲染的换行符

    我有这样的情况 div width 200px div example example example example example div 文本填满整个宽度时自动跳到下一行 div 使用 javascript 如何在上面的行中呈现渲染内
  • 几次函数调用后变量的值消失

    我正在制作一个支持代理的解析器 因为使用免费代理 它们经常死掉 所以我的代码切换到其他代理 这里没有问题 但是切换的原因是我多次重新运行函数 2 7 和我解析的数据消失了 我确信问题很愚蠢 但我自己找不到答案 谢谢回复 想一想 应该以某种方
  • 在CFScript中获取新插入的记录ID

    我有一些代码将记录与请求信息一起插入到日志中 发送请求并发回响应后 我将使用响应信息更新记录 有没有办法获取新插入记录的 ID 以便我可以引用它并在收到响应后更新它 我知道使用 CF 标签可以使用 SET NO COUNT 但它似乎在 CF
  • websockets项目的jetty运行错误

    我正在尝试让 websockets 与 jetty 一起使用 我正在日食 当我尝试运行它时 控制台上出现以下错误 java lang NoClassDefFoundError org objectweb asm ClassVisitor 我
  • Ruby 中的类和该类的单例有什么区别?

    好吧 我正在尝试用 Ruby 进行一些元编程 但我有点困惑 根据我读过的几篇文章 例如this one http ryanangilly com post 234897271 dynamically adding class methods
  • 根据 WooCommerce 中的产品或类别隐藏特定运输选项

    我的 WooCommerce 网站使用 3 种不同的运输类型 皇家邮件签收 7 天 保证第二天 已记录的交付 有些产品只能使用选项 1 发货 当该产品添加到购物车时 我创建的运输类别有助于在购物车中显示选项 1 但其他两个选项仍然可见 不允
  • 如何在 Mac 中打开 conda shell

    我是 conda 和 mac 的新手 我主要使用 Ubuntu 和 pip mac 上有 conda shell吗 我想我在某处读到没有 如果是这种情况 我该如何运行如下命令 conda env create f environment y
  • 将图像数据存储在 MySQL 数据库中?

    我正在实施一个处理大量图像的项目 您认为以下两种方法的优缺点是什么 我需要存储数千个项目 每个项目作为多个字符串属性和一个图像 每个项目作为 ID 整数 MyISAM 表 How would you store the images 方法1
  • Android和PHP登录认证

    我正在尝试在 android 上制作一个应用程序 其中用户需要登录应用程序才能使用它 登录验证将由 PHP Web 服务完成 我有一个login java class CustomeHTTPClient这是我从互联网上获得的示例代码 有一种
  • 提高字典模糊字符串匹配的性能

    所以我目前正在使用第二弦 http secondstring sourceforge net 对于模糊字符串匹配 我有一个大字典可以比较 字典中的每个条目都有一个关联的非唯一标识符 我目前正在使用 hashMap 来存储这本字典 当我想要进
  • 需要加入列表的元素,但加入后保留元素周围的 ''

    我的清单是 example a b c 如果我使用 join example 去除 围绕元素 我希望我的输出是 example a b c 有什么优雅的方法可以做到吗 不确定它是否优雅 但它可以工作 基于默认表示list对象 因此根本不灵活
  • Google App Engine——Java 还是 Python? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我注意到这是在以下帖子 https stackoverflow com questions 1085898 choosing java vs p
  • 如何使用 vue-i18n 加载我真正需要的语言文件?

    使用 vue i18n 可以很容易地翻译你的 Vue js 应用程序 但随着项目的增长 您不想加载所有语言的所有消息 大多数用户从不切换语言 我们为每种语言都有单独的域 并且切换语言的情况极为罕见 所以 vue i18n 似乎支持延迟加载
  • Kubernetes 上的多代理 Kafka 如何设置 KAFKA_ADVERTISED_HOST_NAME

    我当前包含 3 个 Kafka 代理的 Kafka 部署文件如下所示 apiVersion apps v1beta1 kind StatefulSet metadata name kafka spec selector matchLabel
  • 如何在 Android 中在按钮上显示动态文本并自动调整其大小?

    我正在开发一个项目 需要我根据用户在按钮上的选择来显示一些动态文本 我知道如何进行文本显示部分 但我一直困惑于如何在固定大小的按钮上正确显示不同的文本 例如 苹果 和 我有一个苹果 如何才能达到显示 苹果 时文字尺寸变大适合按钮 而显示 我
  • pylint 1.4 报告所有 C 扩展上的 E1101(无成员)

    我们一直是pylint 它的静态分析已经成为我们所有 python 项目的关键部分 并且节省了大量的时间来追踪隐藏的错误 但从 1 3 gt 1 4 升级后 几乎所有编译的 c 扩展都会导致 E1101 no member 错误 之前运行完