Linux下pip安装遭遇json.decoder.JSONDecodeError问题求助
pip安装时JSONDecodeError问题的解决方法
问题场景
在Linux系统中执行以下命令时触发JSON解码错误:
pip install gradiopip install -r requirements.txt
报错核心信息:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
已尝试的无效操作:
- 删除
.cache目录 - 删除虚拟环境并重新安装Anaconda
完整报错堆栈:
ERROR: Exception: Traceback (most recent call last): File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/cli/base_command.py", line 106, in _run_wrapper status = _inner_run() File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/cli/base_command.py", line 97, in _inner_run return self.run(options, args) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/cli/req_command.py", line 67, in wrapper return func(self, options, args) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/commands/install.py", line 386, in run requirement_set = resolver.resolve( File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve result = self._result = resolver.resolve( File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve state = resolution.resolve(requirements, max_rounds=max_rounds) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 427, in resolve failure_causes = self._attempt_to_pin_criterion(name) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 239, in _attempt_to_pin_criterion criteria = self._get_updated_criteria(candidate) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 230, in _get_updated_criteria self._add_to_criteria(criteria, requirement, parent=candidate) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria if not criterion.candidates: File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__ return bool(self._sequence) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 174, in __bool__ return any(self) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 162, in <genexpr> return (c for c in iterator if id(c) not in self._incompatible_ids) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 49, in _iter_built for version, func in infos: File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 307, in iter_index_candidate_infos result = self._finder.find_best_candidate( File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/index/package_finder.py", line 892, in find_best_candidate candidates = self.find_all_candidates(project_name) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/index/package_finder.py", line 833, in find_all_candidates page_candidates = list(page_candidates_it) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/index/sources.py", line 193, in page_candidates yield from self._candidates_from_page(self._link) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/index/package_finder.py", line 797, in process_project_url page_links = list(parse_links(index_response)) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/index/collector.py", line 218, in wrapper_wrapper return list(fn(page)) File "/home/miniconda3/envs/hawk/lib/python3.10/site-packages/pip/_internal/index/collector.py", line 231, in parse_links data = json.loads(page.content) File "/home/miniconda3/envs/hawk/lib/python3.10/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/home/miniconda3/envs/hawk/lib/python3.10/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/home/miniconda3/envs/hawk/lib/python3.10/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
问题分析
从报错堆栈可以看出,pip在尝试解析PyPI索引页面的JSON内容时失败,说明请求获取到的页面内容为空或非JSON格式。大概率是pip的源配置异常,或者网络问题导致无法获取有效索引数据。
解决方案
临时切换国内pip源
直接在安装命令中指定国内镜像:pip install gradio -i https://pypi.tuna.tsinghua.edu.cn/simple # 安装requirements.txt同理 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple永久配置国内pip源
创建或修改~/.config/pip/pip.conf文件,写入以下内容:[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple检查并重置pip配置
先查看当前pip配置:pip config list若存在异常配置,执行重置:
# 重置索引源配置 pip config unset global.index-url # 或重置所有pip配置 pip config --unset-all升级pip到最新版本
先确保pip本身为最新版,避免版本bug:python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple检查网络连通性
测试能否正常访问PyPI索引页面:curl https://pypi.org/simple/gradio/若返回空内容或非JSON格式,说明网络存在拦截,需检查防火墙、代理设置。
内容的提问来源于stack exchange,提问作者Jomeimoon
相关产品推荐
相关产品推荐

