Brownie运行时无法指定网络:'NoneType'对象不可下标访问
Brownie指定网络运行脚本时出现'NoneType'对象不可下标错误的解决办法
问题复现
执行以下命令时触发错误:
brownie run ./scripts/deployment_v2.py --network mainnet brownie run ./scripts/deployment_v2.py --network ropsten
错误提示:
'NoneType' object is not subscriptable
错误日志关键片段:
File "C:\Users\ADMIN\pipx\venvs\eth-brownie\Lib\site-packages\brownie\config.py", line 78, in set_active_network
network["settings"] = self.settings["networks"][key].copy() TypeError: 'NoneType' object is not subscriptable
原因分析
该错误的核心是Brownie配置中找不到你指定的mainnet或ropsten网络对应的配置项,导致self.settings["networks"][key]返回None,无法执行下标操作。
解决方案
1. 检查全局网络配置
- Brownie的全局网络配置文件路径:Windows系统为
C:\Users\ADMIN\.brownie\network-config.yaml,Linux/macOS为~/.brownie/network-config.yaml - 打开文件确认是否存在
mainnet和ropsten的配置节点。若缺失,可通过命令手动添加(需替换自己的Infura密钥):brownie networks add Ethereum mainnet host=https://mainnet.infura.io/v3/[你的Infura密钥] chainid=1 brownie networks add Ethereum ropsten host=https://ropsten.infura.io/v3/[你的Infura密钥] chainid=3
2. 排查项目本地配置
- 项目根目录下的
brownie-config.yaml可能覆盖了全局配置,检查文件内的networks字段是否正确包含目标网络配置,或是否存在格式错误导致网络列表加载失败。 - 可暂时将
brownie-config.yaml重命名为brownie-config.yaml.bak,再执行命令测试是否恢复正常。
3. 验证网络名称正确性
- 执行
brownie networks list查看Brownie已识别的所有网络,确认mainnet/ropsten是否在列表中,注意名称区分大小写,必须完全匹配。
4. 修复Brownie安装
若以上方法无效,可能是安装文件损坏,尝试更新或重装:
pipx upgrade eth-brownie # 或卸载后重装 pipx uninstall eth-brownie pipx install eth-brownie
内容的提问来源于stack exchange,提问作者Udayarajan gauthaman
相关产品推荐
相关产品推荐

