Python

AttributeError:模組“使用者”沒有方法“主要”

  • April 7, 2022

在布朗尼中,我正在執行一個腳本,它向我發送此錯誤“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 將無法正確編譯。

引用自:https://ethereum.stackexchange.com/questions/96440