簡體   English   中英

Python-如何允許在不同模塊中使用功能?

[英]Python - How to allow the use of a function in different modules?

我有2個腳本。

Main.py
Update.py

我在Main.py中有一個函數,該函數基本上執行以下操作:

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

Update.py文件中,我有一個基本上可以執行更新的功能。 但是,在整個更新功能中,無論此時的消息是什么,它都會調用“ log(message)”。

現在的問題是我遇到了NameError:每當我嘗試在Main.py腳本之外使用該函數時, 都不會定義全局名稱“ log”

有什么幫助嗎? 我將如何在任何地方使用功能“ log”?

*代碼簡化用於說明。

編輯:

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

當我嘗試此操作時,它說“無法導入名稱更新”失敗

不要Main導入log 這將重新運行Main.py中的代碼,因為將Main.py作為腳本運行並將其作為模塊導入並不等效。 其他模塊不應依賴於主腳本中定義的功能。 取而代之的是,將您的log函數放在另一個模塊中並導入它,或者讓Main.py以某種方式將記錄器顯式傳遞給其他模塊。

更新 :您無法導入Update因為Python找不到Update Python在4個地方檢查要導入的模塊,但是您應該感興趣的是

  • 腳本所在的目錄,以及
  • PYTHONPATH環境變量中指定的目錄。

您需要將Main.py及其導入的內容放在同一目錄中,或將/Scripts添加到PYTHONPATH

只需添加Update.py

from Main import log

並且您將能夠從Update.py調用log()

您應該導入函數:

from Main import log

或最佳:

import Main
Main.log()

有關彼此導入的模塊 ,請參閱如何具有相互導入的模塊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM