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/

$ 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目錄下

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較低的版本。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM