python - 模块 'xml' 中无名称 'py'

标签 python pylint

不幸的是,我必须在需要使用py.xml的项目中使用pipenv(不是我的决定)和Python 3(同样,不是我的决定)包裹。并且还需要通过pylint验证。

该项目中的一个文件包含以下内容:

from py.xml import html

即使py安装在虚拟环境中,pylint也找不到它,而它...可以找到它。这看起来更像是 pylint 的问题,但也许不是。我不知道如何调试这个困惑。下面是pylint人格 split 的证明:

PYTHONPATH=$(pwd) pipenv run pylint --init-hook 'from py.xml import html;print(type(html))' some_module
<class 'py._xmlgen.NamespaceMetaclass'>
************* Module some_module
E:  8, 0: No name 'xml' in module 'py' (no-name-in-module)
E:  8, 0: Unable to import 'py.xml' (import-error)

不确定我是否会因为上面一行中的讽刺而获得任何额外的业力点,但如果您对虚拟化概念不熟悉,我可能会在这里做一些说明:

It makes no sense to specify PYTHONPATH when running a program which is supposed to set up your virtual environment, yet, for all the loads of nonsense code it contains, the only thing it was supposed to do, it doesn't. Doesn't even try, actually.

<小时/>

哦,如果您认为 py 可能已安装在其他地方,并且以某种方式无法被 pylint 访问......那么,事实并非如此:

PYTHONPATH=$(pwd) pipenv run pylint --init-hook 'from py.xml import html;import inspect;print(inspect.getfile(html))' automation
/home/wvxvw/.local/share/virtualenvs/some_module-UoeXL6dQ/lib/python3.5/site-packages/py/_xmlgen.py
************* Module automation.conftest
E:  8, 0: No name 'xml' in module 'py' (no-name-in-module)
E:  8, 0: Unable to import 'py.xml' (import-error)

最佳答案

source来判断,py命名空间中的属性是动态创建的,这就是静态分析工具pylint无法识别它们的原因:

apipkg.initpkg(__name__, attr={'_apipkg': apipkg}, exportdefs={
    ...
    # small and mean xml/html generation
    'xml' : {
        '__doc__'            : '._xmlgen:__doc__',
        'html'               : '._xmlgen:html',
        'Tag'                : '._xmlgen:Tag',
        'raw'                : '._xmlgen:raw',
        'Namespace'          : '._xmlgen:Namespace',
        'escape'             : '._xmlgen:escape',
    },
})

如果您的项目需要遵守 pylint 合规性,那么您需要同意可以忽略这些导入的警告。

关于python - 模块 'xml' 中无名称 'py',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250376/

相关文章:

python - 有没有办法在python中将数据框样式器对象转换为数据框

python - 给定 3d 点绘制 3d 表面的最简单方法

python - 我已经安装了pylint。但它不会按类型、原始指标、重复等显示统计信息。表。如何让 pylint 显示它?

python - 如何从 Pylint 中排除南移?

python - 如何让pylint在spyder中工作

python - 皮林特 - "Using the global statement"

python - Pylint 中模块 'QApplication' 错误中无名称 'PyQt5.QtWidgets'

python - django connection.queries - 'list' 对象不可调用

Python 没有读入正确数量的列

python - 如何使用数据测试 Django 中的 get 请求?