我正在开发一个大型开源Python项目,其中包含该项目和其他项目都使用的模块。目标是将这些模块中的一些移出到新的“库”项目中,然后可以由原始项目和其他项目导入。
为了顺利过渡,我们的想法是将模块复制到新项目中,然后让原始项目使用新的导入。然而,为了让其他项目有时间在以后迁移,我的想法是让原始模块重定向导入。
例如,repo‘repo’中的用法是这样的(其他项目也可以这样做):
cat neutron/consumer.py
from neutron.redirected import X
print(X)在新创建的'neutron_lib‘项目中,该模块看起来像这样(与项目’new‘中的原始模块相同):
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,我可以在dir()输出中看到'X‘。
你知道为什么我会得到这个pylint错误吗?这是假错误吗?有什么方法可以覆盖它吗?
发布于 2015-11-07 07:36:19
看起来,在tox环境下运行时,我可以将以下代码添加到.pylintrc中以隐藏错误/警告
no-name-in-module
nonstandard-exception当我运行pylint时,它现在通过了,就像运行单元测试一样。我只希望我能理解为什么我会收到这些错误/警告。
https://stackoverflow.com/questions/33533652
复制相似问题