2017-09-25 53 views
0

創建了一個包含我使用很多函數的python「庫」模塊。導入該模塊爲一個腳本,不使用增加了另一個函數的執行

from 'library name' import * 

然而,每當我導入使用

from 'script name' import * 

所有功能測試腳本調用的測試腳本執行兩次測試。

我很確定這是一個導入問題,但我不知道python來解決它。

例子: Library.py

doSomething() 
    print "Library" 

Test.py

from Library import * 
doSomething() 

這將輸出: 「庫」 「庫」

+0

不可重複 - 也許我們錯過了一些東西。 – davedwards

回答

0

您需要添加在以下您的模塊的按鈕,以消除作爲腳本運行您的模塊

if __name__ == '__main__': 
    execution code here 

這將告訴Python什麼時候運行代碼當你的模塊作爲腳本執行。否則,它只會加載模塊命名空間

Python's main docs

主要」是其中的頂級代碼執行範圍的名稱。從標準輸入,腳本或交互式提示中讀取時,模塊的名稱設置爲'main'。

模塊可以通過檢查自己的,它允許一個常見的成語有條件地執行代碼的模塊中,當它運行的腳本或使用python -m發現它是否在主運行範圍但不是在進口時。

+0

我希望它加載名稱空間。問題是,它似乎是兩次加載命名空間 –

+0

現在思考它我想能夠從導入測試,所以我可以運行它作爲測試組的一部分 –

+0

因此,添加'if __name__ =='__main__':pass '在你的庫模塊中,併爲測試腳本添加相同的語句,但插入指令,而不是'pass'語句 – Vinny

0

這是一個與python的日誌記錄功能有關的問題。 logger.getLogger(名稱

相關問題