我试图设置eth-brownie,以获得框架的感觉,但面临一些与导入相关的问题。
我在运行macOS的MBP上工作,Catalina v10.15.7
$ python --version
Python 3.9.9我遵循了https://eth-brownie.readthedocs.io/en/stable/install.html的建议,可以让brownie在CLI中运行得很好。
见下文:
$ pipx list
venvs are in /Users/julien.couvy/.local/pipx/venvs
apps are exposed on your $PATH at /Users/julien.couvy/.local/bin
package eth-brownie 1.17.1, Python 3.9.9
- brownie
$ brownie --version
Brownie v1.17.1 - Python development framework for Ethereum我试过编写一个布朗尼盒子样本,并运行测试,这是很好的工作。
brownie test
Brownie v1.17.1 - Python development framework for Ethereum
Compiling contracts...
Solc version: 0.6.12
Optimizer: Enabled Runs: 200
EVM Version: Istanbul
Generating build data...
- SafeMath
- Token
=============================================================================================================== test session starts ===============================================================================================================
platform darwin -- Python 3.9.9, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: /Users/(...)/sample-contracts/token
plugins: eth-brownie-1.17.1, web3-5.24.0, hypothesis-6.24.0, xdist-1.34.0, forked-1.3.0
collected 38 items
Launching 'ganache-cli --port 8545 --gasLimit 12000000 --accounts 10 --hardfork istanbul --mnemonic brownie'...
tests/test_approve.py ............ [ 31%]
tests/test_transfer.py ......... [ 55%]
tests/test_transferFrom.py ................. [100%]
=============================================================================================================== 38 passed in 10.93s ===============================================================================================================
Terminating local RPC client...当试图通过brownie在python程序中导入VSCode时,它不会解析。这可能是因为VSCode无法找到pipx使用的venv。
此外,我不能使用brownie run运行任何单独的脚本,参见示例:
$ brownie run scripts/token.py
Brownie v1.17.1 - Python development framework for Ethereum
TokenProject is the active project.
Launching 'ganache-cli --port 8545 --gasLimit 12000000 --accounts 10 --hardfork istanbul --mnemonic brownie'...
File "brownie/_cli/run.py", line 50, in main
return_value, frame = run(
File "brownie/project/scripts.py", line 53, in run
module = _import_from_path(script)
File "brownie/project/scripts.py", line 149, in _import_from_path
_import_cache[import_str] = importlib.import_module(import_str)
File "/usr/local/Cellar/python@3.9/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "我尝试过使用eth-brownie在专用venv中安装pipx,而不是使用D14路由。这似乎允许VSCode找到模块,但仍然不能使用brownie run。
发布于 2021-12-03 07:50:09
经过进一步的研究,我找到了之前的文章:
https://stackoverflow.com/questions/68721661/eth-brownie-no-module-named-users-someuser
我已经用建议的编辑在我的brownie ~/.local/pipx/venvs/eth-brownie/lib/python3.9/site-packages/brownie/project/scripts.py中编辑了D2函数,它似乎解决了导入问题。
VSCode导入(linting问题)的另一个潜在解决方案是选择pipx venv作为D3解释器:
CTRL+CMD+P > Python: select Interpreter > ~/.local/pipx/venvs/eth-brownie/bin/python
在那之后,皮毛错误消失了。我将尝试写一些简单的合同,看看它是如何进行的。
https://ethereum.stackexchange.com/questions/114841
复制相似问题