Python
AttributeError:模組“使用者”沒有方法“主要”
在布朗尼中,我正在執行一個腳本,它向我發送此錯誤“AttributeError:模組’使用者’沒有方法’主要’。你對我如何解決這個問題有什麼建議嗎?
import os from brownie import network, accounts, config, Hello def main(): my_account = accounts.add(os.getenv(config['wallets']['from_key'])) hello = Hello.deploy({'from': my_account}) print(hello.address)
這是我在執行 deploy.py 腳本時收到的:
Brian Lee@MSI MINGW64 ~/Python39/brownie/New folder $ brownie run scripts/deploy.py --network kovan INFO: Could not find files for the given pattern(s). Brownie v1.14.3 - Python development framework for Ethereum NewFolderProject is the active project. File "c:\users\brian, line line, in in return_value, frame = run( File "c:\users\brian, line line, in in raise AttributeError(f"Module '{name}' has no method '{method_name}'") AttributeError: Module 'Users.Brian Lee.Python39.brownie.New folder.scripts.deploy' has no method 'main'```
我通過@user91379 回答解決了這個問題。編輯任何腳本,例如:deploy.py。這將觸發 Brownie 重新編譯所有原始碼,此問題將消失。感謝 user91379。
我在 MacOSX 上遇到了同樣的問題。我試圖保存所有腳本並重新編譯所有源,但這個問題仍然存在。
有趣的是,我注意到提問者使用
def main():
將所有程式碼打包到 python 文件中,而我仍在使用舊式方法,例如if __name__ == '__main__':
(我的 Python 版本 3.8.5)這是觸發此錯誤的關鍵點嗎?
更新
今天我把
if __name__ == '__main__':
我的python文件中的所有程式碼都改成了新版本,def main():
它可以工作了。結案。謝謝。相關文件
從 Brownie 的 doc 文件中,我在
scripts.run.py
這裡找到了函式的定義。它說這個函式有一個名為“method_name”的參數,預設設置為“main”。這意味著您必須定義一個“主”函式,否則這個 run.py 將無法正確編譯。