尝试 运行 "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
大家好,我正在尝试使用 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