ImportError: No module named 'requests.packages.urllib3' 解决方法
ImportError: No module named 'requests.packages.urllib3' 解决方法
https://www.xiaomastack.com/2015/04/17/docker-py/
docker-py是访问docker api的一个python模块,该模块可以在python脚本中很方便的调用docker api,如果要自己造这个轮子的话可以参考docker api的说明文档
https://docs.docker.com/reference/api/docker_remote_api_v1.16/
安装docker-py,该项目的github地址是
https://github.com/docker/docker-py
cd /opt/repos/pip-packages/
1 2 3 4 | $ tar zxf docker-py-1.10.6. tar .gz $ cd docker-py-1.10.6 $ python setup.py build $ python setup.py install |
使用方法可以参考其提供的文档http://docker-py.readthedocs.org/en/latest/ 没有什么特别的,比如:
>>> from docker import Client
>>> c = Client(base_url='unix://var/run/docker.sock')
>>> c.version()
{u'KernelVersion': u'2.6.32-504.el6.x86_64', u'Arch': u'amd64', u'ApiVersion': u'1.16', u'Version': u'1.4.1', u'GitCommit': u'5bc2ff8/1.4.1', u'Os': u'linux', u'GoVersion': u'go1.3.3'}
#可以使用sock访问,也可以使用TCP访问(默认TCP方式没有打开,需要在docker服务启动的时候指定)
>>> c = Client(base_url='http://127.0.0.1:2345')
>>> c.version()
{u'KernelVersion': u'2.6.32-504.el6.x86_64', u'Arch': u'amd64', u'ApiVersion': u'1.16', u'Version': u'1.4.1', u'GitCommit': u'5bc2ff8/1.4.1', u'Os': u'linux', u'GoVersion': u'go1.3.3'}
>>>
ImportError: No module named 'requests.packages.urllib3'
下载requests-2.20.1-py2.py3-none-any.whl requests-2.20.1.tar.gz这两个包,放到/opt/repos/pip-packages目录下
1 2 3 | mv requests-2.20.1-py2.py3-none-any.whl /opt/repos/pip-packages mv requests-2.20.1. tar .gz /opt/repos/pip-packages pip install --upgrade --force-reinstall 'requests==2.20.1' urllib3 |
使用过程中出现了点小问题,情景还原如下:
>>> from docker import Client
>>> c = Client(base_url='unix://var/run/docker.sock')
>>> c.version()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/site-packages/docker_py-1.1.0-py2.6.egg/docker/client.py", line 944, in version
return self._result(self._get(url), json=True)
File "/usr/lib/python2.6/site-packages/docker_py-1.1.0-py2.6.egg/docker/client.py", line 124, in _result
self._raise_for_status(response)
File "/usr/lib/python2.6/site-packages/docker_py-1.1.0-py2.6.egg/docker/client.py", line 120, in _raise_for_status
raise errors.APIError(e, response, explanation=explanation)
docker.errors.APIError: 404 Client Error: Not Found ("client and server don't have same version (client : 1.17, server: 1.16)")
>>>
由于默认支持的docker api版本是1.17,而我目前使用的docker api是1.16,很简单修改/usr/lib/python2.6/site-packages/docker_py-1.1.0-py2.6.egg/docker/client.py文件的相关常量即可:
#DEFAULT_DOCKER_API_VERSION = '1.17'
DEFAULT_DOCKER_API_VERSION = '1.16'
不过如果docker api的版本低于1.15时docker-py-1.1.0不支持,需要下载docker-py较低的版本。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现