我有一个自定义模块加载器,基本上可以进行一些重定向。我希望pylint能够识别此自定义加载程序。这是我的情况:

root/
    __init__.py
    new/
        __init__.py
        foo.py
        bar.py
    old/
        __init__.py


我有很多导入old.foo的客户。我在old/__init__.py中编写了一个自定义加载程序,将它们重定向到后台导入new.foo。我如何让pylint认识到这一点?当它掉毛import old.foo时,它抱怨找不到old.foo。这只是pylint的问题。我可以获取客户端代码来识别自定义加载程序,而不会出现任何问题。

最佳答案

documentation on modules


  程序包支持另一个特殊属性__path__。在执行该文件中的代码之前,此表初始化为包含目录的名称的列表,该目录包含软件包的__init__.py。这个变量可以修改;这样做会影响以后对包中包含的模块和子包的搜索。


因此,如果我正确理解,您想将对old的任何引用重定向到new,那么您要做的就是将old文件夹替换为包含以下内容的old.py文件夹:

__path__ = ["new"]


然后,当任何东西尝试导入old.foo时,它将最终导入new.foo

关于python - 让pylint识别自定义模块加载器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36359210/

10-13 09:05