导入processor库时触发NoParseError错误的问题求助
解决
import processor时的NoParseError错误 问题原因
这个错误来自Hy(一种编译到Python的Lisp方言)的宏解析器,说明processor库内部用Hy编写的代码存在语法问题,或是和当前安装的Hy版本不兼容。具体是解析(. collections.abc [Iterable])这个表达式时,解析器预期输入结束,却收到了额外内容,从而触发报错。
可行解决方案
1. 降级Hy版本
尝试安装兼容的旧版Hy,比如0.19.0版本,该版本对旧Hy语法支持更好:
pip install hy==0.19.0
安装完成后再执行import processor测试。
2. 更换替代库
如果降级Hy无效,可更换功能类似的Python库。比如processor用于并发任务的话,可改用concurrent.futures;若是数据处理场景,选择对应成熟替代库即可。
3. 修复库内的Hy代码
若具备源码修改能力,找到processor库中Hy编写的文件,将出错的表达式替换为标准Hy导入语法:
(import [collections.abc [Iterable]])
修改完成后重新安装修改后的库。
错误复现细节
- 操作步骤:先执行
pip install processor,再运行import processor - 受影响Python版本:3.8、3.9
- 完整错误栈:
File c:\users\souregi\appdata\local\programs\python\python38\lib\site-packages\hy\macros.py:67 in import parse_tree = pattern.parse(args) File c:\users\souregi\appdata\local\programs\python\python38\lib\site-packages\funcparserlib\parser.py:221 in parse (tree, _) = self.run(tokens, State(0, 0, None)) File c:\users\souregi\appdata\local\programs\python\python38\lib\site-packages\funcparserlib\parser.py:383 in _shift (v, s2) = self.run(tokens, s) File c:\users\souregi\appdata\local\programs\python\python38\lib\site-packages\funcparserlib\parser.py:306 in _add (v2, s3) = other.run(tokens, s2) File c:\users\souregi\appdata\local\programs\python\python38\lib\site-packages\funcparserlib\parser.py:534 in finished raise NoParseError("got unexpected token", s2) NoParseError: got unexpected token: hy.models.List([ hy.models.Expression([ hy.models.Symbol('.'), hy.models.Symbol('collections'), hy.models.Symbol('abc')]), hy.models.List([ hy.models.Symbol('Iterable')])]), expected: end of input
内容的提问来源于stack exchange,提问作者Mehdi Souregi
相关产品推荐
相关产品推荐

