无法导入模块 ANTLR MyGrammarLexer 和 MyGrammarParser [英] Can't import module ANTLR MyGrammarLexer and MyGrammarParser

查看:19
本文介绍了无法导入模块 ANTLR MyGrammarLexer 和 MyGrammarParser的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从 ANTLR 开始.当我导入模块 antlr 时它工作得很好,但是如果我尝试导入 MyGrammarLexerMyGrammarParser ,它表明 MyGrammarLexer 和 Parser 不是在库中.我使用 PyCharm ,我安装了 ANTLR :pip3 install antlr4-python3-runtime 我的代码是:

导入系统从 antlr4 导入 *导入 MyGrammarLexer导入 MyGrammarParser定义主(argv):输入 = FileStream(argv[1])词法分析器 = MyGrammarLexer(输入)流 = CommonTokenStream(词法分析器)解析器 = MyGrammarParser(流)树 = parser.startRule()如果 __name__ == '__main__':主要(sys.argv)

也许谁知道为什么我不能导入 MyGrammarLexer 和 MyGrammarParser?请建议!回击:

/usr/bin/python3.6/home/andrejka/PycharmProjects/Parser/parser.py回溯(最近一次调用最后一次):文件/home/andrejka/PycharmProjects/Parser/parser.py",第2行,在<module>从 antlr4 导入 *文件/usr/lib/python3/dist-packages/antlr4/__init__.py",第5行,在<module>从 antlr4.BufferedTokenStream 导入 TokenStream文件/usr/lib/python3/dist-packages/antlr4/BufferedTokenStream.py",第19行,在<module>从 antlr4.error.Errors 导入 IllegalStateException文件/usr/lib/python3/dist-packages/antlr4/error/Errors.py",第5行,在<module>从 antlr4.atn.Transition 导入 PredicateTransition文件/usr/lib/python3/dist-packages/antlr4/atn/Transition.py",第 19 行,在 <module> 中从 __builtin__ 导入 unicodeModuleNotFoundError: 没有名为__builtin__"的模块sys.excepthook 中的错误:回溯(最近一次调用最后一次):文件/usr/lib/python3/dist-packages/apport_python_hook.py",第 63 行,在 apport_excepthook从 apport.fileutils 导入可能_打包,get_recent_crashes文件/usr/lib/python3/dist-packages/apport/__init__.py",第5行,在<module>从 appport.report 导入报告 中的文件/usr/lib/python3/dist-packages/apport/report.py",第 30 行导入 appport.fileutils 中的文件/usr/lib/python3/dist-packages/apport/fileutils.py",第 23 行从 apport.packaging_impl 导入 impl 作为包装文件/usr/lib/python3/dist-packages/apport/packaging_impl.py",第 23 行,在 <module> 中导入 apt文件/usr/lib/python3/dist-packages/apt/__init__.py",第 23 行,在 <module> 中导入apt_pkgModuleNotFoundError: 没有名为apt_pkg"的模块原来的例外是:回溯(最近一次调用最后一次):文件/home/andrejka/PycharmProjects/Parser/parser.py",第2行,在<module>从 antlr4 导入 *文件/usr/lib/python3/dist-packages/antlr4/__init__.py",第5行,在<module>从 antlr4.BufferedTokenStream 导入 TokenStream文件/usr/lib/python3/dist-packages/antlr4/BufferedTokenStream.py",第19行,在<module>从 antlr4.error.Errors 导入 IllegalStateException文件/usr/lib/python3/dist-packages/antlr4/error/Errors.py",第5行,在<module>从 antlr4.atn.Transition 导入 PredicateTransition文件/usr/lib/python3/dist-packages/antlr4/atn/Transition.py",第 19 行,在 <module> 中从 __builtin__ 导入 unicodeModuleNotFoundError: 没有名为__builtin__"的模块

解决方案

我发现了包的内容:

HTTPS://pypi.python.org/packages/0b/6b/30c5b84d203b62e1412d14622e3bae6273399d79d20f3a24c8145213f610/antlr4-python3-runtime-4.7b3-runtime-4.7.d555ab304b4b4b3p9f954b4b4b4b4b4b3p304b3p3p9f954b4b4b4b3p9f954b4b4b4b4b4b4b4b4b4b4b3p9f3999d79d20f3a24c8273399e3bae6273399

与pip3安装的包不同.

我已经替换了以下内容:

~/anaconda3/envs/py3/lib/python3.6/site-packages/antlr4

包含我手动下载和提取的包中的内容:

~/Downloads/antlr4-python3-runtime-4.7/src/antlr4

它现在似乎可以工作了 - 特别是以下错误:

ModuleNotFoundError: 没有名为__builtin__"的模块

不会发生.

I'm trying to start with ANTLR . When I import module antlr it's working just fine , but if I try to import MyGrammarLexer and MyGrammarParser , it's shows that MyGrammarLexer and Parser aren't in lib. I Using PyCharm , I installed ANTLR with : pip3 install antlr4-python3-runtime my code is :

import sys
from antlr4 import *
import MyGrammarLexer
import MyGrammarParser


def main(argv):
    input = FileStream(argv[1])
    lexer = MyGrammarLexer(input)
    stream = CommonTokenStream(lexer)
    parser = MyGrammarParser(stream)
    tree = parser.startRule()


if __name__ == '__main__':
    main(sys.argv)

Maybe whom know why i can't import MyGrammarLexer and MyGrammarParser? Please suggest! Tackback:

    /usr/bin/python3.6 /home/andrejka/PycharmProjects/Parser/parser.py
Traceback (most recent call last):
  File "/home/andrejka/PycharmProjects/Parser/parser.py", line 2, in <module>
    from antlr4 import *
  File "/usr/lib/python3/dist-packages/antlr4/__init__.py", line 5, in <module>
    from antlr4.BufferedTokenStream import TokenStream
  File "/usr/lib/python3/dist-packages/antlr4/BufferedTokenStream.py", line 19, in <module>
    from antlr4.error.Errors import IllegalStateException
  File "/usr/lib/python3/dist-packages/antlr4/error/Errors.py", line 5, in <module>
    from antlr4.atn.Transition import PredicateTransition
  File "/usr/lib/python3/dist-packages/antlr4/atn/Transition.py", line 19, in <module>
    from __builtin__ import unicode
ModuleNotFoundError: No module named '__builtin__'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "/home/andrejka/PycharmProjects/Parser/parser.py", line 2, in <module>
    from antlr4 import *
  File "/usr/lib/python3/dist-packages/antlr4/__init__.py", line 5, in <module>
    from antlr4.BufferedTokenStream import TokenStream
  File "/usr/lib/python3/dist-packages/antlr4/BufferedTokenStream.py", line 19, in <module>
    from antlr4.error.Errors import IllegalStateException
  File "/usr/lib/python3/dist-packages/antlr4/error/Errors.py", line 5, in <module>
    from antlr4.atn.Transition import PredicateTransition
  File "/usr/lib/python3/dist-packages/antlr4/atn/Transition.py", line 19, in <module>
    from __builtin__ import unicode
ModuleNotFoundError: No module named '__builtin__'

I found out that content of the package:

https://pypi.python.org/packages/0b/6b/30c5b84d203b62e1412d14622e3bae6273399d79d20f3a24c8145213f610/antlr4-python3-runtime-4.7.tar.gz#md5=190245a0fb4abf43568489a4b6e33aba

is different from the package installed by pip3.

I have replaced content of:

~/anaconda3/envs/py3/lib/python3.6/site-packages/antlr4

with content from the package I have downloaded and extracted manually:

~/Downloads/antlr4-python3-runtime-4.7/src/antlr4

It seems to be working now - in particular the following error:

ModuleNotFoundError: No module named '__builtin__'

does not occur.

这篇关于无法导入模块 ANTLR MyGrammarLexer 和 MyGrammarParser的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆