我正在尝试安装和使用python solidity parser by ConsenSys,pip3安装没有给出错误,但当我尝试导入模块时,它显示
File "<stdin>", line 1, in <module>
File "/home/seed/.local/lib/python3.5/site-packages/python-solidity-parser/solidity_parser/__init__.py", line 1, in <module>
from .parser import parse_file, parse, objectify, visit
File "/home/seed/.local/lib/python3.5/site-packages/python-solidity-parser/solidity_parser/parser.py", line 10, in <module>
from solidity_parser.solidity_antlr4.SolidityLexer import SolidityLexer
File "/home/seed/.local/lib/python3.5/site-packages/python-solidity-parser/solidity_parser/solidity_antlr4/SolidityLexer.py", line 783, in <module>
class SolidityLexer(Lexer):
NameError: name 'Lexer' is not defined我尝试手动安装它,并确保具有所需的依赖项。我还安装了antlr4并下载了所需的固态语法。我在ubuntu 16上使用python 3.5.2。
发布于 2020-05-21 02:24:20
我不能复制它。下面是我所做的:
mkdir solidity-parser-test
cd solidity-parser-test
python3 -m venv env
source env/bin/activate
pip3 install solidity_parser
python3 test.py test.sol其中,最后一个命令将打印以下内容:
{'children': [{'name': 'solidity',
'type': 'PragmaDirective',
'value': '>=0.5.0<0.7.0'},
{'baseContracts': [],
'kind': 'contract',
'name': 'Coin',
'subNodes': [],
'type': 'ContractDefinition'}],
'type': 'SourceUnit'}test.py是这样的:
import sys
import pprint
from solidity_parser import parser
sourceUnit = parser.parse_file(sys.argv[1])
pprint.pprint(sourceUnit) test.sol看起来像这样:
pragma solidity >=0.5.0 <0.7.0;
contract Coin {
}注意:使用Python测试的版本是3.7.6
https://stackoverflow.com/questions/61915344
复制相似问题