You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Brownie无法读取.env环境变量 导致Rinkeby测试网合约部署报错

问题根因

报错The private key must be exactly 32 bytes long, instead of 0 bytes本质是Brownie读取到的PRIVATE_KEY变量为空,或者内容格式错误,核心原因有以下几类:

  • 执行命令的工作目录错误:你运行brownie run的目录不是brownie-config.yml和.env所在的项目根目录,导致Brownie无法加载.env文件
  • .env文件格式不符合要求:
    • 加了多余的export前缀,部分版本的Brownie解析.env时不会处理export前缀,导致无法正确识别变量
    • 等号两侧有空格,或者私钥被引号、大括号等多余符号包裹
    • 私钥本身长度不对,缺少0x前缀或者位数不足
  • 环境变量未正确加载:部分旧版本Brownie不会自动触发dotenv加载,需要手动在代码中引入
  • 手动导出环境变量的会话不匹配:你在A终端导出了变量,却在B终端执行brownie命令,导致变量未生效
解决方案

按以下步骤逐一排查即可解决:

  1. 确认工作目录
    执行brownie run前先执行ls命令,确认当前目录下同时存在brownie-config.yml和.env两个文件,避免在子目录下执行命令。
  2. 修正.env文件格式
    将.env文件内容修改为以下格式,不要加export、不要留空格、不要给私钥加引号或大括号:
PRIVATE_KEY=0x你的实际十六进制私钥

确保私钥去掉0x后是64位十六进制字符,刚好对应32字节。
3. 手动加载dotenv(可选)
如果修改后还是读取不到,在你的helpful_scripts.py文件最顶部添加以下代码,手动触发环境变量加载:

from dotenv import load_dotenv
load_dotenv()
  1. 验证手动导出的变量
    如果你选择手动导出环境变量,在执行brownie命令的同一个终端窗口执行echo $PRIVATE_KEY,确认输出是你的正确私钥后再运行部署命令。
  2. 升级Brownie版本(可选)
    旧版本Brownie存在dotenv解析bug,可执行以下命令升级到最新版:
pip install --upgrade eth-brownie

内容的提问来源于stack exchange,提问作者PhilippB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:24:09