虚拟环境中运行任意pip命令触发AttributeError问题求助
解决venv中pip抛出AttributeError: 'Url' object has no attribute 'host_ip'的问题
我的Linux Mint 21系统(Python 3.10)里的虚拟环境venv中pip突然故障,运行任何pip命令(比如pip install --upgrade pip)都会抛出以下错误:
Traceback (most recent call last): File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py", line 165, in exc_logging_wrapper status = run_func(*args) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py", line 205, in wrapper return func(self, options, args) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/commands/install.py", line 339, in run requirement_set = resolver.resolve( File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 94, in resolve result = self._result = resolver.resolve( File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 481, in resolve state = resolution.resolve(requirements, max_rounds=max_rounds) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 348, in resolve self._add_to_criteria(self.state.criteria, r, parent=None) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria if not criterion.candidates: File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__ return bool(self._sequence) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__ return any(self) File "/home/user/code/home-stuff/.venv/lib/python3.10/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/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 44, in _iter_built for version, func in infos: File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 294, in iter_index_candidate_infos result = self._finder.find_best_candidate( File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py", line 868, in find_best_candidate candidates = self.find_all_candidates(project_name) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py", line 809, in find_all_candidates page_candidates = list(page_candidates_it) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/index/sources.py", line 134, in page_candidates yield from self._candidates_from_page(self._link) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py", line 769, in process_project_url html_page = self._link_collector.fetch_page(project_url) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/index/collector.py", line 604, in fetch_page return _get_html_page(location, session=self.session) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/index/collector.py", line 509, in _get_html_page resp = _get_html_response(url, session=session) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/index/collector.py", line 125, in _get_html_response resp = session.get( File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py", line 542, in get return self.request('GET', url, **kwargs) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_internal/network/session.py", line 454, in request return super().request(method, url, *args, **kwargs) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py", line 529, in request resp = self.send(prep, **send_kwargs) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py", line 645, in send r = adapter.send(request, **kwargs) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py", line 57, in send resp = super(CacheControlAdapter, self).send(request, **kw) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py", line 413, in send conn = self.get_connection(request.url, proxies) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py", line 316, in get_connection conn = self.poolmanager.connection_from_url(url) File "/home/user/code/home-stuff/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/poolmanager.py", line 299, in connection_from_url u.host_ip, port=u.port, scheme=u.scheme, pool_kwargs=pool_kwargs AttributeError: 'Url' object has no attribute 'host_ip'
解决方案
方案1:重新安装pip到虚拟环境
激活虚拟环境后,运行官方脚本覆盖损坏的pip:
curl https://bootstrap.pypa.io/get-pip.py | python3
方案2:重建虚拟环境
如果重新安装pip无效,直接重建环境:
# 退出虚拟环境 deactivate # 删除旧环境 rm -rf /home/user/code/home-stuff/.venv # 重新创建并激活 python3 -m venv /home/user/code/home-stuff/.venv source /home/user/code/home-stuff/.venv/bin/activate
之后重新安装项目依赖即可。
方案3:修复urllib3版本冲突
由于apt upgrade可能导致系统urllib3版本与pip内置版本冲突,可指定兼容版本:
# 激活虚拟环境后执行 pip uninstall -y urllib3 pip install urllib3==1.26.15
内容的提问来源于stack exchange,提问作者Dmitriy
相关产品推荐
相关产品推荐

