我正在使用 pyyaml 开发一个 python 项目。我需要在基于 bitnami/minideb:jessie 的 Docker 容器中运行它。Python 版本是 2.7.9。原始代码正在使用 CLoader,我目前无法更改它。CLoader 无法加载但 Loader 正常的任何原因?
>>> import yaml
>>> yaml.__version__
'3.12'
>>> from yaml import Loader
>>> from yaml import CLoader
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name CLoader
>>>
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚我在这里缺少什么。任何的想法 ?
从 Docker 映像 python:2.7.9 运行它不会引发任何错误:
$ docker run -ti python:2.7.9 bash
#/ python
>>> from yaml import CLoader
>>> from yaml import Loader
>>>
Run Code Online (Sandbox Code Playgroud)
默认情况下,setup.py 脚本会检查 LibYAML 是否已安装,如果已安装,则构建并安装 LibYAML 绑定。
这是编译和安装 CLoader 的最低要求。
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y \
python3 python3-dev python3-pip gcc libyaml-dev
RUN pip3 install pyyaml
# verify
RUN python3 -c "import yaml; yaml.CLoader"
Run Code Online (Sandbox Code Playgroud)