2015-11-04 103 views
1

我正在開發一個大型的開源Python項目,其中包含項目和其他項目使用的模塊。目標是將這些模塊中的一部分移出到一個新的「庫」項目,然後由原始項目和其他項目導入。將python導入重定向到另一個模塊

爲了平滑過渡,我們的想法是將模塊複製到新項目中,然後讓原始項目使用新的導入。但是,爲了讓其他項目有時間遷移,以爲原始模塊會重定向導入。

例如,使用是這樣的回購協議「中子」(其他項目可以做同樣的):在創建新的「neutron_lib」項目

cat neutron/consumer.py 
from neutron.redirected import X 


print(X) 

的,模塊看起來像這樣(的一樣的東西原來是項目「中子」):

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錯誤?這是一個錯誤的錯誤?有沒有辦法覆蓋它?

+0

該代碼有效,但只是失敗pylint。不知道如何禁用該錯誤。 – pcm

回答

0

樣子,TOX下運行的時候,我可以添加以下.pylintrc隱藏錯誤/警告

no-name-in-module 
nonstandard-exception 

當我運行pylint的,現在通過,因爲它運行單元測試。只是希望我明白爲什麼我會收到這些錯誤/警告。

相關問題