将python导入重定向到另一个模块

时间:2015-11-04 22:55:48

标签: python-2.7

我正在开发一个大型开源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错误?这是一个错误的错误吗?有没有办法覆盖它?

1 个答案:

答案 0 :(得分:0)

看起来,当在tox下运行时,我可以将以下内容添加到.pylintrc中以隐藏错误/警告

no-name-in-module
nonstandard-exception

当我运行pylint时,它现在通过,运行单元测试也是如此。只是希望我理解为什么我会收到这些错误/警告。