天天看點

分析pip 下載下傳原理(一):逾時或者下載下傳失敗raise ReadTimeoutError(self._pool, None, 'Read timed out.') pip._vendor.urllib

時間緊張,未完待續....

網絡環境差的時候需要我們獨立的進行相對應的包下載下傳離線安裝,或者給pip 加上 國内的鏡像源比如加上清華的鏡像源:

參考網址:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

Microsoft Windows [版本 10.0.17134.1]
(c) 2018 Microsoft Corporation。保留所有權利。

D:\download>pip install virtualenvwrapper-4.8.4.tar.gz
Processing d:\download\virtualenvwrapper-4.8.4.tar.gz
Collecting virtualenv (from virtualenvwrapper==4.8.4)
  WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)",)': /simple/virtualenv/
  Downloading https://files.pythonhosted.org/packages/84/3a/9d656ec2535fa5f6680d55ef93a05f890bd1b2ad6f2bf97b34a679abf365/virtualenv-20.0.13-py2.py3-none-any.whl (4.6MB)
     |███████████                     | 1.6MB 8.4kB/s eta 0:05:56ERROR: Exception:
Traceback (most recent call last):
  File "d:\language\python\python36\lib\site-packages\pip\_vendor\urllib3\response.py", line 397, in _error_catcher
    yield
  File "d:\language\python\python36\lib\site-packages\pip\_vendor\urllib3\response.py", line 479, in read
    data = self._fp.read(amt)
  File "d:\language\python\python36\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 62, in read
    data = self.__fp.read(amt)
  File "d:\language\python\python36\lib\http\client.py", line 449, in read
    n = self.readinto(b)
  File "d:\language\python\python36\lib\http\client.py", line 493, in readinto
    n = self.fp.readinto(b)
  File "d:\language\python\python36\lib\socket.py", line 586, in readinto
    return self._sock.recv_into(b)
  File "d:\language\python\python36\lib\ssl.py", line 1012, in recv_into
    return self.read(nbytes, buffer)
  File "d:\language\python\python36\lib\ssl.py", line 874, in read
    return self._sslobj.read(len, buffer)
  File "d:\language\python\python36\lib\ssl.py", line 631, in read
    v = self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\language\python\python36\lib\site-packages\pip\_internal\cli\base_command.py", line 188, in main
    status = self.run(options, args)
  File "d:\language\python\python36\lib\site-packages\pip\_internal\commands\install.py", line 345, in run
    resolver.resolve(requirement_set)
  File "d:\language\python\python36\lib\site-packages\pip\_internal\legacy_resolve.py", line 196, in resolve
    self._resolve_one(requirement_set, req)
  File "d:\language\python\python36\lib\site-packages\pip\_internal\legacy_resolve.py", line 359, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "d:\language\python\python36\lib\site-packages\pip\_internal\legacy_resolve.py", line 307, in _get_abstract_dist_for
    self.require_hashes
  File "d:\language\python\python36\lib\site-packages\pip\_internal\operations\prepare.py", line 199, in prepare_linked_requirement
    progress_bar=self.progress_bar
  File "d:\language\python\python36\lib\site-packages\pip\_internal\download.py", line 1064, in unpack_url
    progress_bar=progress_bar
  File "d:\language\python\python36\lib\site-packages\pip\_internal\download.py", line 924, in unpack_http_url
    progress_bar)
  File "d:\language\python\python36\lib\site-packages\pip\_internal\download.py", line 1152, in _download_http_url
    _download_url(resp, link, content_file, hashes, progress_bar)
  File "d:\language\python\python36\lib\site-packages\pip\_internal\download.py", line 861, in _download_url
    hashes.check_against_chunks(downloaded_chunks)
  File "d:\language\python\python36\lib\site-packages\pip\_internal\utils\hashes.py", line 75, in check_against_chunks
    for chunk in chunks:
  File "d:\language\python\python36\lib\site-packages\pip\_internal\download.py", line 829, in written_chunks
    for chunk in chunks:
  File "d:\language\python\python36\lib\site-packages\pip\_internal\utils\ui.py", line 156, in iter
    for x in it:
  File "d:\language\python\python36\lib\site-packages\pip\_internal\download.py", line 818, in resp_read
    decode_content=False):
  File "d:\language\python\python36\lib\site-packages\pip\_vendor\urllib3\response.py", line 531, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "d:\language\python\python36\lib\site-packages\pip\_vendor\urllib3\response.py", line 496, in read
    raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
  File "d:\language\python\python36\lib\contextlib.py", line 99, in __exit__
    self.gen.throw(type, value, traceback)
  File "d:\language\python\python36\lib\site-packages\pip\_vendor\urllib3\response.py", line 402, in _error_catcher
    raise ReadTimeoutError(self._pool, None, 'Read timed out.')
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

D:\download>pip install virtualenvwrapper-4.8.4.tar.gz
Processing d:\download\virtualenvwrapper-4.8.4.tar.gz
ERROR: Operation cancelled by user
WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

D:\download>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvwrapper-4.8.4.tar.gz
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Processing d:\download\virtualenvwrapper-4.8.4.tar.gz
Collecting virtualenv (from virtualenvwrapper==4.8.4)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/84/3a/9d656ec2535fa5f6680d55ef93a05f890bd1b2ad6f2bf97b34a679abf365/virtualenv-20.0.13-py2.py3-none-any.whl (4.6MB)
     |████████████████████████████████| 4.6MB 273kB/s
Collecting virtualenv-clone (from virtualenvwrapper==4.8.4)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ba/f8/50c2b7dbc99e05fce5e5b9d9a31f37c988c99acd4e8dedd720b7b8d4011d/virtualenv_clone-0.5.3-py2.py3-none-any.whl
Collecting stevedore (from virtualenvwrapper==4.8.4)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e6/49/a35dd566626892d577e426dbe5ea424dd7fbe10645f2c1070dcba474eca9/stevedore-1.32.0-py2.py3-none-any.whl (43kB)
     |████████████████████████████████| 51kB 656kB/s
Requirement already satisfied: importlib-metadata<2,>=0.12; python_version < "3.8" in d:\language\python\python36\lib\site-packages (from virtualenv->virtualenvwrapper==4.8.4) (1.5.0)
Collecting importlib-resources<2,>=1.0; python_version < "3.7" (from virtualenv->virtualenvwrapper==4.8.4)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/8f/36/e678bc02cad98e566fbd7e6711ab2f389fc9adfb1edbb9f553eae41f9f97/importlib_resources-1.4.0-py2.py3-none-any.whl
Requirement already satisfied: appdirs<2,>=1.4.3 in d:\language\python\python36\lib\site-packages\appdirs-1.4.3-py3.6.egg (from virtualenv->virtualenvwrapper==4.8.4) (1.4.3)
Requirement already satisfied: six<2,>=1.9.0 in d:\language\python\python36\lib\site-packages (from virtualenv->virtualenvwrapper==4.8.4) (1.10.0)
Collecting filelock<4,>=3.0.0 (from virtualenv->virtualenvwrapper==4.8.4)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/93/83/71a2ee6158bb9f39a90c0dea1637f81d5eef866e188e1971a1b1ab01a35a/filelock-3.0.12-py3-none-any.whl
Collecting distlib<1,>=0.3.0 (from virtualenv->virtualenvwrapper==4.8.4)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/7d/29/694a3a4d7c0e1aef76092e9167fbe372e0f7da055f5dcf4e1313ec21d96a/distlib-0.3.0.zip (571kB)
     |████████████████████████████████| 573kB 328kB/s
Collecting pbr!=2.1.0,>=2.0.0 (from stevedore->virtualenvwrapper==4.8.4)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/7a/db/a968fd7beb9fe06901c1841cb25c9ccb666ca1b9a19b114d1bbedf1126fc/pbr-5.4.4-py2.py3-none-any.whl (110kB)
     |████████████████████████████████| 112kB 409kB/s
Requirement already satisfied: zipp>=0.5 in d:\language\python\python36\lib\site-packages (from importlib-metadata<2,>=0.12; python_version < "3.8"->virtualenv->virtualenvwrapper==4.8.4) (2.2.0)
Installing collected packages: importlib-resources, filelock, distlib, virtualenv, virtualenv-clone, pbr, stevedore, virtualenvwrapper
  Running setup.py install for distlib ... done
  Running setup.py install for virtualenvwrapper ... done
Successfully installed distlib-0.3.0 filelock-3.0.12 importlib-resources-1.4.0 pbr-5.4.4 stevedore-1.32.0 virtualenv-20.0.13 virtualenv-clone-0.5.3 virtualenvwrapper-4.8.4
WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

D:\download>
           

pip 是個非常普通的python 下載下傳工具,但是盡管簡單常用,我們還是需要明白他的機制,以及增加運用的手段的靈活性