我有一个自定义模块加载器,基本上可以进行一些重定向。我希望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/