docker-compose cannot import name UnrewindableBodyError 解决方法
# docker-compose -f docker-compose.ci.build.yml up
Traceback (most recent call last):
File “/usr/bin/docker-compose”, line 7, in
from compose.cli.main import main
File “/usr/lib/python2.7/site-packages/compose/cli/main.py”, line 17, in
import docker
File “/usr/lib/python2.7/site-packages/docker/init.py”, line 2, in
from .api import APIClient
File “/usr/lib/python2.7/site-packages/docker/api/init.py”, line 2, in
from .client import APIClient
File “/usr/lib/python2.7/site-packages/docker/api/client.py”, line 5, in
import requests
File “/usr/lib/python2.7/site-packages/requests/init.py”, line 43, in
import urllib3
File “/usr/lib/python2.7/site-packages/urllib3/init.py”, line 10, in
from .connectionpool import (
File “/usr/lib/python2.7/site-packages/urllib3/connectionpool.py”, line 31, in
from .connection import (
File “/usr/lib/python2.7/site-packages/urllib3/connection.py”, line 45, in
from .util.ssl_ import (
File “/usr/lib/python2.7/site-packages/urllib3/util/init.py”, line 4, in
from .request import make_headers
File “/usr/lib/python2.7/site-packages/urllib3/util/request.py”, line 5, in
from …exceptions import UnrewindableBodyError
ImportError: cannot import name UnrewindableBodyError
Build step ‘Execute shell’ marked build as failure
Finished: FAILURE
查看安装包情况
# pip list|egrep ‘requests|utils|urllib3’
requests (2.18.4)
urllib3 (1.22)
utils 未安装
第一步:更新urllib3
pip install --upgrade urllib3
# docker-compose -f docker-compose.ci.build.yml up
/usr/lib/python2.7/site-packages/requests/init.py:80: RequestsDependencyWarning: urllib3 (1.24.1) or chardet (3.0.4) doesn’t match a supported version!
RequestsDependencyWarning)
Traceback (most recent call last):
File “/bin/docker-compose”, line 7, in
from compose.cli.main import main
File “/usr/lib/python2.7/site-packages/compose/cli/main.py”, line 17, in
import docker
File “/usr/lib/python2.7/site-packages/docker/init.py”, line 2, in
from .api import APIClient
File “/usr/lib/python2.7/site-packages/docker/api/init.py”, line 2, in
from .client import APIClient
File “/usr/lib/python2.7/site-packages/docker/api/client.py”, line 5, in
import requests
File “/usr/lib/python2.7/site-packages/requests/init.py”, line 97, in
from . import utils
File “/usr/lib/python2.7/site-packages/requests/utils.py”, line 26, in
from ._internal_utils import to_native_string
File “/usr/lib/python2.7/site-packages/requests/_internal_utils.py”, line 11, in
from .compat import is_py2, builtin_str, str
File “/usr/lib/python2.7/site-packages/requests/compat.py”, line 47, in
from urllib3.packages.ordered_dict import OrderedDict
ImportError: No module named ordered_dict
第二步:安装更新utils和requests
pip install --upgrade utils requests
执行docker-compose -f docker-compose.ci.build.yml up运行正常
更新完成
# pip list|egrep ‘requests|utils|urllib3’
requests (2.21.0)
urllib3 (1.24.1)
utils (0.9.0)
总结
方法:升级相关依赖包
pip install --upgrade requests utils urllib3