代码之家  ›  专栏  ›  技术社区  ›  alvas

从pylint循环导入修复R0401

  •  6
  • alvas  · 技术社区  · 6 年前

    Pylint抱怨使用R0401错误代码循环导入NLTK包的特定文件,例如。

    nltk/nltk/ccg/lexicon.py:1: [R0401(cyclic-import), ] Cyclic import (nltk -> nltk.internals)
    nltk/nltk/ccg/lexicon.py:1: [R0401(cyclic-import), ] Cyclic import (nltk.corpus -> nltk.tokenize -> nltk.tokenize.punkt -> nltk.probability)
    nltk/nltk/ccg/lexicon.py:1: [R0401(cyclic-import), ] Cyclic import (nltk.corpus -> nltk.tokenize -> nltk.tokenize.texttiling)
    nltk/nltk/ccg/lexicon.py:1: [R0401(cyclic-import), ] Cyclic import (nltk.draw.tree -> nltk.tree)
    nltk/nltk/ccg/lexicon.py:1: [R0401(cyclic-import), ] Cyclic import (nltk.tree -> nltk.treeprettyprinter)
    nltk/nltk/ccg/lexicon.py:1: [R0401(cyclic-import), ] Cyclic import (nltk.grammar -> nltk.parse.pchart)
    nltk/nltk/ccg/lexicon.py:1: [R0401(cyclic-import), ] Cyclic import (nltk.stem -> nltk.stem.porter)
    nltk/nltk/ccg/lexicon.py:1: [R0401(cyclic-import), ] Cyclic import (nltk.classify.maxent -> nltk.classify.tadm)
    

    完整的名单在名单上 https://github.com/nltk/nltk/issues/2113

    但看看进口情况:

    from __future__ import unicode_literals from 
    
    import re
    from collections import defaultdict
    
    from nltk.ccg.api import PrimitiveCategory, Direction, CCGVar, FunctionalCategory
    from nltk.compat import python_2_unicode_compatible
    from nltk.internals import deprecated
    
    from nltk.sem.logic import *
    

    但你看这个 nltk.internals https://github.com/nltk/nltk/blob/develop/nltk/internals.py nltk.ccg.lexicon

    from __future__ import print_function
    
    import subprocess
    import os
    import fnmatch
    import re
    import warnings
    import textwrap
    import types
    import sys
    import stat
    import locale
    
    # Use the c version of ElementTree, which is faster, if possible:
    try:
        from xml.etree import cElementTree as ElementTree
    except ImportError:
        from xml.etree import ElementTree
    
    from six import string_types
    
    from nltk import __file__
    from nltk import compat
    

    这是什么意思 R0401(cyclic-import)

    在看 nltk.ccg.lexicon.py nltk.internals.py

    1 回复  |  直到 6 年前
        1
  •  5
  •   Mikhail Burshteyn    6 年前

    不知道为什么派林在报纸上报道这些 nltk/nltk/ccg/lexicon.py 但是循环导入本身可以在错误消息的右侧看到。

    第一个错误: Cyclic import (nltk -> nltk.internals) :根 __init__.py 从导入 nltk.internals ,和 internals.py 从包根目录进行导入,这显然是一个循环导入。