尝试 运行 "brownie run .\scripts\deploy.py --network rinkeby" 但得到 ValueError

Trying to run "brownie run .\scripts\deploy.py --network rinkeby" but getting a ValueError

大家好,我正在尝试使用 infura 将我的项目部署到 rinkeby 链上,但出现了 ValueError 这是我的引用:

INFO: Could not find files for the given pattern(s).
Brownie v1.17.1 - Python development framework for Ethereum

  File "c:\users\allow\appdata\local\programs\python\python39\lib\site-packages\brownie\_cli\__main__.py", line 64, in main
    importlib.import_module(f"brownie._cli.{cmd}").main()
  File "c:\users\allow\appdata\local\programs\python\python39\lib\site-packages\brownie\_cli\run.py", line 44, in main
    network.connect(CONFIG.argv["network"])
  File "c:\users\allow\appdata\local\programs\python\python39\lib\site-packages\brownie\network\main.py", line 40, in connect
    web3.connect(host, active.get("timeout", 30))
  File "c:\users\allow\appdata\local\programs\python\python39\lib\site-packages\brownie\network\web3.py", line 52, in connect
    uri = _expand_environment_vars(uri)
  File "c:\users\allow\appdata\local\programs\python\python39\lib\site-packages\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'

这是我的 deploy.py 代码

from brownie import accounts, config, SimpleStorage, network
import os

def deploy_simple_storage():
    account = get_account()
    simple_storage = SimpleStorage.deploy({"from": account})
    stored_value = simple_storage.retrieve()
    print(stored_value)
    transaction = simple_storage.store(15, {"from": account})
    transaction.wait(1)
    updated_stored_value = simple_storage.retrieve()
    print(updated_stored_value)


def get_account():
    if network.show_active() == "development":
        return accounts[0]
    else:
        return accounts.add(config["wallets"]["from_key"])


def main():
    deploy_simple_storage()

我在编码方面的经验真的很少。我认为问题与 .env 有关,但我不知道我现在应该做什么。仅供参考,我正在使用 windows n 遵循此课程 https://www.youtube.com/watch?v=M576WGiDBdQ 停留在 4:48:00

看来您的环境变量设置不正确,在这种情况下看起来是您的 WEB3_INFURA_PROJECT_ID。

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

来修复它

布朗尼-config.yaml:

dotenv: .env .env:

出口WEB3_INFURA_PROJECT_ID=YOUR_PROJECT_ID_HERE 记得保存这些文件。

此外,您至少应该使用 brownie 版本 v1.14.6。您可以查看您使用的是什么版本:

布朗尼 --version

我已经遇到这个错误好几天了,并且看到它在网上发布了很多。 我只是从我需要的位置上移了 1 个目录 - 我非常仔细地遵循了 Patrick Collins 教程,并添加了一个虚拟环境,所以也许其他人只是遇到了我遇到的同样问题。

我最初在目录“\demos\web3 brownie”中,其中包含一个名为“brownie”的文件夹和我的 python 虚拟环境文件。

当我在目录“\demos\web3 brownie\brownie”中时,脚本现在是 运行,其中包含 brownie 构建、脚本、合同目录

我按照同样的路线进行,也被卡住了。我只是将我的 infura 项目 ID 作为环境变量放在我的系统 (windows10) 上,而不是放在 .env 文件上。 https://www.twilio.com/blog/2017/01/how-to-set-environment-variables.html

我遇到了同样的问题 (Mac OS),我查看了另一个关于 Brownie Deployment 的 YouTube,发现 "network" 需要在导入时定义。

from brownie import 上面的这行代码在我的 deploy.py 中起到了作用:

import brownie.network as network