0

我正在按照该视频中的教程进行操作,现在我在将合同部署到 rinkeby testnet 时遇到了困难

如果我运行brownie run scripts/deploy.py --network rinkeby我会得到一个错误:

BrownieProject is an active project.
  File "brownie/_cli/__main__.py", line 64, in main
    importlib.import_module(f"brownie._cli.{cmd}").main()
  File "brownie/_cli/run.py", line 44, in main
    network.connect(CONFIG.argv["network"])
  File "brownie/network/main.py", line 40, in connect
    web3.connect(host, active.get("timeout", 30))
  File "brownie/network/web3.py", line 52, in connect
    uri = _expand_environment_vars(uri)
  File "brownie/network/web3.py", line 183, in _expand_environment_vars
    raise ValueError(f"Unable to expand environment variable in host setting: '{uri}'")
ValueError: Unable to expand environment variable in host setting: 'https://rinkeby.infura.io/v3/$WEB3_INFURA_PROJECT_ID'

我检查了brownie-config.yaml文件和 .env 是否有输入错误,但没有发现任何内容。

布朗尼-config.yaml

dotenv: .env
wallets:
  from_key: ${PRIVATE_KEY}

我已经创建了一个 infura api 并将其添加到 .env 文件中作为export WEB3_INFURA_PROJECT_ID=abc12345656789.

如果我运行命令brownie run scripts/deploy.py一切正常,所以我可以排除任何错字。有人知道有什么问题吗?

我用的是布朗尼 v1.17.2

4

2 回答 2

1

通常,这意味着您的环境变量设置不正确,在这种情况下,它看起来像是您的WEB3_INFURA_PROJECT_ID.

您可以通过在.env文件中设置变量并将其添加dotenv: .envbrownie-config.yaml.

brownie-config.yaml

dotenv: .env

.env

export WEB3_INFURA_PROJECT_ID=YOUR_PROJECT_ID_HERE

请记住保存这些文件。

此外,您至少应该使用 brownie 版本 v1.14.6。你可以找出你正在使用的版本:

brownie --version

如果您知道如何设置环境变量,您可能需要检查是否正确设置了它们。

于 2022-01-14T22:45:12.687 回答
1

我相信您没有在文件中加载环境变量。安装python-dotenv

  pip install python-dotenv

在您的deploy.pyif .env 位于同一目录中:

import os
from dotenv import load_dotenv 

#default directory for .env file is the current directory
#if you set .env in different directory, put the directory address load_dotenv("directory_of_.env)
load_dotenv()

然后像这样使用它:

 private_key=os.getenv("PRIVATE_KEY")
于 2022-01-11T19:42:03.447 回答