Python導入問題

一、背景

在Python模塊倒入的方法中,存在兩個問題,一個是循環導入,一個是模塊導入的覆蓋。在使用過程中遇到了模塊導入覆蓋的情況,出現了以下的錯誤:

TypeError: 'module' object is not callable

這個錯誤是由於不規範的導入覆蓋+模塊引用衝突引起的,在Python中,所有後出現的模塊會覆蓋前面的導入模塊,並且有些模塊的使用是需要指明導入的模塊路徑,例如tqdm的使用。因此在文件one.py中導入了模塊x,而在two.py中同時導入了one和x,但是由於one中的模塊導入不規範,使得其覆蓋了two中導入的模塊,因此引發了上述的錯誤。

二、錯誤例子示範

給定兩個文件one.py和two.py,其中two將作爲模塊別one導入。
one.py的文件如下,以tqdm模塊爲例子。

from tqdm import tqdm
from two import *

x = [i for i in range(10)]
for i in tqdm(x):
    print(i)

two.py的文件如下:

import tqdm

這個時候one.py就會出現下面的bug

Traceback (most recent call last):
  File "one.py", line 5, in <module>
    for i in tqdm(x):
TypeError: 'module' object is not callable

三、解決辦法

知道了問題,解決方法也有兩個。
第一在two文件中,規範導入

from tqdm import tqdm

第二在one文件中,將tqdm導入滯後

from two import *
from tqdm import tqdm

這裏遇到的問題和其他的博主不一樣。關鍵的問題在於理解模塊導入的過程和方法,可以排查出問題。

四、參考

CSDN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章