2013-07-14 43 views
0

我有2個腳本。Python - 如何允許在不同模塊中使用函數?

Main.py 
Update.py 

我在Main.py基本上執行以下功能:

def log(message): 
    print(message) 
    os.system("echo " + message + " >> /logfile.txt") 

而在Update.py文件我有一個單一的功能,基本上做了更新。然而,在整個更新功能中,它將該消息的任何內容稱爲「日誌(消息)」。

現在的問題是,雖然我得到一個NameError:全局名稱「日誌」是不是每當我試圖使用功能Main.py腳本之外定義

任何幫助?關於如何在任何地方使用函數'log'?

*代碼簡化說明。

編輯:

Main.py imports Update from /Scripts/Update.py 
Update.py imports log from Main.py 

當我嘗試這一點,它沒有說 「不能導入名稱更新」

+0

Main.py在哪裏? – user2357112

+0

根目錄。然後/腳本/文件夾包含Update.py腳本。 – Skowt

回答

3

不要Main進口log。這將重新運行Main.py中的代碼,因爲將Main.py作爲腳本運行並將其作爲模塊導入並不等同。其他模塊不應該依賴主腳本中定義的函數。相反,把你的log函數放在另一個模塊中,並導入它,或讓Main.py明確地將一個記錄器傳遞給其他模塊。您可以導入Update,因爲Python找不到它。在4 places Python的檢查模塊的導入,但在有

  • 目錄中的腳本是由和
  • PYTHONPATH環境變量指定的目錄,你應該有興趣的人。

你要麼需要把主要。py和它在同一個目錄中導入的東西,或者將/Scripts添加到您的PYTHONPATH

1

就在添加Update.py

from Main import log 

您可以從Update.py中調用log()

+0

這不是導入語法的工作原理。 – user2357112

+0

ops,修正了錯字,謝謝;) – user2304916

+0

請閱讀以上的答案。它沒有工作:? – Skowt

1

你應該導入功能:

from Main import log 

或最佳:

import Main 
Main.log() 

對於模塊導入對方,請How can I have modules that mutually import each other

+0

試過了。它做了一些奇怪的錯誤。 基本上。如果我在我的主腳本中導入Update函數。然後嘗試在更新腳本中導入日誌功能。它做了一個怪異的循環,並嘗試導入更新函數時出錯。 – Skowt

+0

更新後,請檢查並參考鏈接。@ Skowt – zhangyangyu

相關問題