ValueError:python后端不支持注解

oalqel3c  于 2023-01-10  发布在  Python
关注(0)|答案(1)|浏览(168)

ijson模块有一个文档选项allow_comments=True,但是当我包含它时,会产生一条错误消息:
ValueError:python后端不支持注解
Below is a transcript using the file test.py:

import ijson
for o in ijson.items(open(0), 'item'):
     print(o)

请注意,我对类似的文档选项multiple_values=True没有问题。

成绩单

$ python3 --version
Python 3.10.9
$ python3 test.py <<< [1,2]
1
2
# Now change the call to: ijson.items(open(0), 'item', allow_comments=True)
$ python3 test.py <<< [1,2]
Traceback (most recent call last):
  File "/Users/user/test.py", line 5, in <module>
    for o in ijson.items(open(0), 'item', allow_comments=True):
  File "/usr/local/lib/python3.10/site-packages/ijson/utils.py", line 51, in coros2gen
    f = chain(events, *coro_pipeline)
  File "/usr/local/lib/python3.10/site-packages/ijson/utils.py", line 29, in chain
    f = coro_func(f, *coro_args, **coro_kwargs)
  File "/usr/local/lib/python3.10/site-packages/ijson/backends/python.py", line 284, in basic_parse_basecoro
    raise ValueError("Comments are not supported by the python backend")
ValueError: Comments are not supported by the python backend
$
5cg8jx4n

5cg8jx4n1#

请看一下文档的Backends部分,其中写道:
Ijson以位于ijson/backends中的后端的形式提供了实际解析的几种实现:
yajl2_c:一个使用YAJL 2.x的C扩展。这是最快的,但是在安装这个包时可能需要编译器和YAJL开发文件。主要平台/架构都有二进制wheel发行版,以使用户不必编译这个包。
yajl2_cffi:使用CFFI Package YAJL 2.x。
yajl2:使用ctypes Package YAJL 2.x,用于由于某种原因无法使用CFFI的情况。
yajl:已弃用YAJL 1.x + ctypes Package 器,适用于更旧的系统。
python:纯Python解析器,适合与PyPy一起使用
稍后在常见问题解答中它说:
问:后端之间有什么不同吗?
... python后端不支持allow_comments=True它也在内部使用str对象,而不是bytes,但这是一个内部细节,用户不需要担心,将来可能会改变。
如果你想支持allow_comments=True,你需要使用一个基于yajl的后端。
将顶级库导入为import ijson时,将按照上面列表的相同顺序使用第一个可用后端,其名称记录在ijson. backend下。如果设置了IJSON_BACKEND环境变量,则其值优先,并用于选择默认后端。
您需要在您的系统上安装必要的库等,以便使其工作。

相关问题