pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool[host='files.pythonhosted.org', port=443]: Read timed out.
- 1. pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
- 2. pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
- 3. 解决 pip install 安装软件包出现的问题
- 4. Installing from Wheels
- References
1. pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out.
sudo pip install tensorflow-gpu==1.4.0
yongqiang@famu-sys:~$ sudo pip install tensorflow-gpu==1.4.0
[sudo] yongqiang 的密码:
WARNING: The directory '/home/yongqiang/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
WARNING: The directory '/home/yongqiang/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting tensorflow-gpu==1.4.0
Downloading https://files.pythonhosted.org/packages/3d/59/7b74db1ce032b5368d96d0b0965baa02b8d6a91726b4ed58be249c268e98/tensorflow_gpu-1.4.0-cp35-cp35m-manylinux1_x86_64.whl (170.1MB)
|████ | 21.5MB 4.0kB/s eta 10:25:18ERROR: Exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/urllib3/response.py", line 360, in _error_catcher
yield
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/urllib3/response.py", line 442, in read
data = self._fp.read(amt)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/cachecontrol/filewrapper.py", line 62, in read
data = self.__fp.read(amt)
File "/usr/lib/python3.5/http/client.py", line 448, in read
n = self.readinto(b)
File "/usr/lib/python3.5/http/client.py", line 488, in readinto
n = self.fp.readinto(b)
File "/usr/lib/python3.5/socket.py", line 575, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3.5/ssl.py", line 929, in recv_into
return self.read(nbytes, buffer)
File "/usr/lib/python3.5/ssl.py", line 791, in read
return self._sslobj.read(len, buffer)
File "/usr/lib/python3.5/ssl.py", line 575, 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 "/usr/local/lib/python3.5/dist-packages/pip/_internal/cli/base_command.py", line 178, in main
status = self.run(options, args)
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/commands/install.py", line 352, in run
resolver.resolve(requirement_set)
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/resolve.py", line 131, in resolve
self._resolve_one(requirement_set, req)
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/resolve.py", line 294, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/resolve.py", line 242, in _get_abstract_dist_for
self.require_hashes
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/operations/prepare.py", line 347, in prepare_linked_requirement
progress_bar=self.progress_bar
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/download.py", line 886, in unpack_url
progress_bar=progress_bar
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/download.py", line 746, in unpack_http_url
progress_bar)
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/download.py", line 954, in _download_http_url
_download_url(resp, link, content_file, hashes, progress_bar)
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/download.py", line 683, in _download_url
hashes.check_against_chunks(downloaded_chunks)
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/utils/hashes.py", line 62, in check_against_chunks
for chunk in chunks:
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/download.py", line 651, in written_chunks
for chunk in chunks:
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/utils/ui.py", line 156, in iter
for x in it:
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/download.py", line 640, in resp_read
decode_content=False):
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/urllib3/response.py", line 494, in stream
data = self.read(amt=amt, decode_content=decode_content)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/urllib3/response.py", line 459, in read
raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
File "/usr/lib/python3.5/contextlib.py", line 77, in __exit__
self.gen.throw(type, value, traceback)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/urllib3/response.py", line 365, 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.
yongqiang@famu-sys:~$
2. pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out.
pip install nn-meter
(base) yongqiang@yongqiang:~/yongqiang_work$ pip install nn-meter
Collecting nn-meter
Using cached nn_meter-2.0-py3-none-any.whl (132 kB)
Requirement already satisfied: numpy in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (1.25.2)
Requirement already satisfied: pandas in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (1.5.3)
Requirement already satisfied: tqdm in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (4.65.0)
Collecting networkx (from nn-meter)
Downloading networkx-3.2.1-py3-none-any.whl (1.6 MB)
━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.2/1.6 MB 8.1 kB/s eta 0:02:59
ERROR: Exception:
Traceback (most recent call last):
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/urllib3/response.py", line 438, in _error_catcher
yield
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/urllib3/response.py", line 561, in read
data = self._fp_read(amt) if not fp_closed else b""
^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/urllib3/response.py", line 527, in _fp_read
return self._fp.read(amt) if amt is not None else self._fp.read()
^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 90, in read
data = self.__fp.read(amt)
^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/http/client.py", line 466, in read
s = self.fp.read(amt)
^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/socket.py", line 706, in readinto
return self._sock.recv_into(b)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/ssl.py", line 1278, in recv_into
return self.read(nbytes, buffer)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/ssl.py", line 1134, in read
return self._sslobj.read(len, buffer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TimeoutError: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 169, in exc_logging_wrapper
status = run_func(*args)
^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 248, in wrapper
return func(self, options, args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/commands/install.py", line 377, in run
requirement_set = resolver.resolve(
^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve
result = self._result = resolver.resolve(
^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 427, in resolve
failure_causes = self._attempt_to_pin_criterion(name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 239, in _attempt_to_pin_criterion
criteria = self._get_updated_criteria(candidate)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 230, in _get_updated_criteria
self._add_to_criteria(criteria, requirement, parent=candidate)
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
if not criterion.candidates:
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__
return bool(self._sequence)
^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
return any(self)
^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
return (c for c in iterator if id(c) not in self._incompatible_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
candidate = func()
^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_candidate_from_link
self._link_candidate_cache[link] = LinkCandidate(
^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 293, in __init__
super().__init__(
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
self.dist = self._prepare()
^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 225, in _prepare
dist = self._prepare_distribution()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 304, in _prepare_distribution
return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/operations/prepare.py", line 516, in prepare_linked_requirement
return self._prepare_linked_requirement(req, parallel_builds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/operations/prepare.py", line 587, in _prepare_linked_requirement
local_file = unpack_url(
^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/operations/prepare.py", line 166, in unpack_url
file = get_http_url(
^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/operations/prepare.py", line 107, in get_http_url
from_path, content_type = download(link, temp_dir.path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/network/download.py", line 147, in __call__
for chunk in chunks:
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/cli/progress_bars.py", line 53, in _rich_progress_bar
for chunk in iterable:
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_internal/network/utils.py", line 63, in response_chunks
for chunk in response.raw.stream(
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/urllib3/response.py", line 622, in stream
data = self.read(amt=amt, decode_content=decode_content)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/urllib3/response.py", line 560, in read
with self._error_catcher():
File "/home/yongqiang/miniconda3/lib/python3.11/contextlib.py", line 155, in __exit__
self.gen.throw(typ, value, traceback)
File "/home/yongqiang/miniconda3/lib/python3.11/site-packages/pip/_vendor/urllib3/response.py", line 443, 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.
(base) yongqiang@yongqiang:~/yongqiang_work$
3. 解决 pip install 安装软件包出现的问题
网络原因导致的安装超时,需要重新下载安装。
3.1. 延长超时时间
下载命令后添加参数 --default-timeout=1000
,时间可以自定义。
pip install 默认超时时间是 15s,在安装的过程中可能会超时。我们在执行命令时,可显式设置超时时间。
--default-timeout=100
--default-timeout=500
--default-timeout=1000
sudo pip3 --default-timeout=100 install opencv-python==3.4.0.14
sudo pip3 --default-timeout=1000 install opencv-python==3.4.0.14
3.2. 更换 PyPI (pip) 镜像源
- 临时使用
pip install -i https://mirrors.zju.edu.cn/pypi/web/simple some-package
pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple some-package
其中 simple
不能少,若使用 http
镜像需要加上 --trusted-host mirrors.zju.edu.cn
- 设为默认
升级 pip 到最新的版本 (>=10.0.0) 后进行配置:
pip install pip -U
pip config set global.index-url https://mirrors.zju.edu.cn/pypi/web/simple
如果你到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:
pip install -i https://mirrors.zju.edu.cn/pypi/web/simple pip -U
pip config set global.index-url https://mirrors.zju.edu.cn/pypi/web/simple
pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple pip -U
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
安装 nn-meter 2.0
pip install nn-meter --default-timeout=1000 -i https://pypi.tuna.tsinghua.edu.cn/simple
(base) yongqiang@yongqiang:~/yongqiang_work$ pip install nn-meter --default-timeout=1000 -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: nn-meter in /home/yongqiang/miniconda3/lib/python3.11/site-packages (2.0)
Requirement already satisfied: numpy in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (1.25.2)
Requirement already satisfied: pandas in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (1.5.3)
Requirement already satisfied: tqdm in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (4.65.0)
Requirement already satisfied: networkx in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (3.2.1)
Requirement already satisfied: requests in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (2.31.0)
Requirement already satisfied: protobuf in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (4.25.0)
Requirement already satisfied: PyYAML in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (6.0.1)
Requirement already satisfied: scikit-learn in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (1.3.2)
Requirement already satisfied: packaging in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (23.0)
Requirement already satisfied: jsonlines in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from nn-meter) (4.0.0)
Requirement already satisfied: attrs>=19.2.0 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from jsonlines->nn-meter) (23.1.0)
Requirement already satisfied: python-dateutil>=2.8.1 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from pandas->nn-meter) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from pandas->nn-meter) (2022.7)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from requests->nn-meter) (2.0.4)
Requirement already satisfied: idna<4,>=2.5 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from requests->nn-meter) (3.4)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from requests->nn-meter) (1.26.16)
Requirement already satisfied: certifi>=2017.4.17 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from requests->nn-meter) (2023.7.22)
Requirement already satisfied: scipy>=1.5.0 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from scikit-learn->nn-meter) (1.11.3)
Requirement already satisfied: joblib>=1.1.1 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from scikit-learn->nn-meter) (1.3.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from scikit-learn->nn-meter) (3.2.0)
Requirement already satisfied: six>=1.5 in /home/yongqiang/miniconda3/lib/python3.11/site-packages (from python-dateutil>=2.8.1->pandas->nn-meter) (1.16.0)
(base) yongqiang@yongqiang:~/yongqiang_work$
3.3. PyPI (pip) 镜像源
- 清华大学开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/
https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn
- 阿里巴巴 OPSX 开源镜像站
https://developer.aliyun.com/mirror/
https://mirrors.aliyun.com/pypi/simple
sudo pip3 install -i https://mirrors.aliyun.com/pypi/simple scipy
sudo pip3 install -i https://mirrors.aliyun.com/pypi/simple scikit-learn
https://mirrors.cloud.tencent.com/pypi/simple/
sudo pip3 install -i https://mirrors.cloud.tencent.com/pypi/simple scipy
sudo pip3 install -i https://mirrors.cloud.tencent.com/pypi/simple scikit-learn
- 中国科学技术大学开源软件镜像 (USTC open source software mirror)
https://mirrors.ustc.edu.cn/
https://mirrors.ustc.edu.cn/help/pypi.html
https://mirrors.ustc.edu.cn/pypi/web/simple
sudo pip3 install -i https://mirrors.ustc.edu.cn/pypi/web/simple scipy
sudo pip3 install -i https://mirrors.ustc.edu.cn/pypi/web/simple scikit-learn
同步方式:使用 bandersnatch,从 pypi.python.org 官方同步。
- 北京外国语大学开源软件镜像站
https://mirrors.bfsu.edu.cn/
https://mirrors.bfsu.edu.cn/pypi/web/simple
sudo pip3 install -i https://mirrors.bfsu.edu.cn/pypi/web/simple scipy
sudo pip3 install -i https://mirrors.bfsu.edu.cn/pypi/web/simple scikit-learn
- 北京大学开源镜像站
https://mirrors.pku.edu.cn/Mirrors
https://mirrors.pku.edu.cn/pypi/web/simple
sudo pip3 install -i https://mirrors.pku.edu.cn/pypi/web/simple scipy
sudo pip3 install -i https://mirrors.pku.edu.cn/pypi/web/simple scikit-learn
- SJTUG (上海交通大学 Linux 用户组) 软件源镜像服务
https://mirrors.sjtug.sjtu.edu.cn/
https://mirror.sjtu.edu.cn/pypi/web/simple
sudo pip3 install -i https://mirror.sjtu.edu.cn/pypi/web/simple scipy
sudo pip3 install -i https://mirror.sjtu.edu.cn/pypi/web/simple scikit-learn
https://mirrors.zju.edu.cn/pypi/web/simple
sudo pip3 install -i https://mirrors.zju.edu.cn/pypi/web/simple scipy
sudo pip3 install -i https://mirrors.zju.edu.cn/pypi/web/simple scikit-learn
4. Installing from Wheels
“Wheel” is a built, archive format that can greatly speed installation compared to building and installing from source archives.
User Guide
https://pip.pypa.io/en/latest/user_guide/
Wheel Docs
https://wheel.readthedocs.io/en/stable/
PEP 427 – The Wheel Binary Package Format 1.0
https://peps.python.org/pep-0427/
PEP 425 – Compatibility Tags for Built Distributions
https://peps.python.org/pep-0425/
下载离线安装包,使用 pip install ******.whl
安装。
- https://pypi.tuna.tsinghua.edu.cn/simple/
查找 nn-meter 文件夹。
- https://pypi.tuna.tsinghua.edu.cn/simple/nn-meter/
- To install a wheel file, use pip:
$ pip install someproject-1.5.0-py2-py3-none.whl
$ python -m pip install SomePackage-1.0-py2.py3-none-any.whl
References
[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/
[2] pip, https://pip.pypa.io/en/stable/
[3] USTC Mirror Help, https://mirrors.ustc.edu.cn/help/index.html
[4] PyPI 镜像源使用帮助,https://mirrors.ustc.edu.cn/help/pypi.html
[5] User Guide, https://pip.pypa.io/en/latest/user_guide/
[6] bandersnatch, https://pypi.org/project/bandersnatch/