创建一个包含以下内容的test.py
import sys
print(sys.version)
from importlib.metadata import version
print(f"ruamel.yaml version {version('ruamel.yaml')}")
from ruamel.yaml import CSafeDumper
在上运行python3.11 test.py
将生成
3.11.3 (main, Apr 5 2023, 14:14:37) [GCC 11.3.0]
ruamel.yaml version 0.17.22
Traceback (most recent call last):
File "/home/victory/test.py", line 6, in <module>
from ruamel.yaml import CSafeDumper
ImportError: cannot import name 'CSafeDumper' from 'ruamel.yaml' (/home/victory/venv_3.11/lib/python3.11/site-packages/ruamel/yaml/__init__.py)
python3.10 test.py
返回
3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0]
ruamel.yaml version 0.17.22
我不知道这是一个bug,还是在最新的python版本中ruamel.yaml发生了一些变化。https://pypi.org/project/ruamel.yaml/0.17.22/没有提到任何关于这一点,据我所知。
1条答案
按热度按时间polhcujo1#
从GCC 11.3.0开始,我假设您在Linux上运行。您没有描述您是如何安装的,但看起来您只安装了ruamel.yaml,而没有安装
ruamel.yaml.clib
,CSafeDumper
需要安装ruamel.yaml.clib
才能激活。对于Python 3.10,
ruamel.yaml.clib
的安装是自动的,但对于Python 3.11,它不是(它将在ruamel.yaml
的下一个版本中)。在运行Ubuntu 22.04的机器上,在新创建的virtualenv中:
所以只要显式安装
ruamel.yaml.clib
就可以了。