我正在开发一个大型开源Python项目,该项目包含项目和其他项目使用的模块。目标是将其中一些模块移到一个新的"库"然后可以由原始项目和其他项目导入的项目。
为了使这种过渡顺利进行,我们的想法是将模块复制到新项目,然后让原始项目使用新导入。但是,为了让其他项目有时间稍后迁移,我们的想法是让原始模块重定向导入。
例如,在repo' neutron'中使用就像这样。 (其他项目也可以这样做):
cat neutron/consumer.py
from neutron.redirected import X
print(X)
新的' neutron_lib'项目创建后,模块看起来像这样(与项目中的原始内容相同' neutron'):
cat ../neutron-lib/neutron_lib/redirected.py
X = 5
在“中子”中项目,我试图将此作为重定向模块:
cat neutron/redirected.py
import neutron_lib.redirected
import sys
sys.modules['neutron.redirected'] = neutron_lib.redirected
当我运行pylint时,会出现以下错误:
************* Module neutron.redirected
E: 1, 0: No name 'redirected' in module 'neutron_lib' (no-name-in-module)
************* Module neutron.consumer
E: 1, 0: No name 'X' in module 'neutron.redirected' (no-name-in-module)
如果我运行它,它运行正常,而consumer.py打印' 5'。如果我使用ipython并加载consumer.py,我可以看到' X'在dir()输出中。
我知道为什么我会收到这个pylint错误?这是一个错误的错误吗?有没有办法覆盖它?
答案 0 :(得分:0)
看起来,当在tox下运行时,我可以将以下内容添加到.pylintrc中以隐藏错误/警告
no-name-in-module
nonstandard-exception
当我运行pylint时,它现在通过,运行单元测试也是如此。只是希望我理解为什么我会收到这些错误/警告。