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