使用一次CodeArtifact后pip无法识别公共PyPI源故障排查
排查方向与解决方法
你提到IDE内安装包正常、只有脚本调用pip时出问题,本质是IDE使用了独立的pip配置环境,和你脚本调用的pip加载的配置不是同一套。你已经检查过.pypirc和手动修改过pip.conf仍未解决问题,基本可以确定是配置优先级更高的位置残留了CodeArtifact相关设置,按以下顺序排查即可:
- 先定位所有pip加载的配置文件:直接执行
pip config debug,命令会输出pip当前读取的所有配置文件路径、每个文件内的生效配置项,逐行查找是否存在CodeArtifact域名对应的index-url、extra-index-url、trusted-host配置,找到后直接删除对应条目即可。
注意:如果运行安装脚本时用的是虚拟环境内的pip,必须先激活对应虚拟环境再执行上述命令,虚拟环境目录下自带的pip.conf优先级高于用户级、全局级配置,是最容易漏查的位置。 - 检查环境变量残留:CodeArtifact的授权脚本通常会通过注入
PIP_INDEX_URL、PIP_EXTRA_INDEX_URL环境变量强制改pip源,这类环境变量的优先级高于所有pip配置文件。你可以根据自己用的终端执行对应命令查看变量值:- Linux/macOS 执行
echo $PIP_INDEX_URL - Windows cmd 执行
echo %PIP_INDEX_URL% - Windows PowerShell 执行
$env:PIP_INDEX_URL
如果输出内容是CodeArtifact的地址,就去对应shell的启动配置文件(bash对应.bashrc/.bash_profile,zsh对应.zshrc,Windows去系统环境变量设置面板)里删掉导出这两个变量的行,重启终端后生效。
- Linux/macOS 执行
- 检查shell别名:执行
alias pip、alias pip3查看是否存在给pip命令硬编码了CodeArtifact源参数的别名,比如类似alias pip='pip -i https://xxx.codeartifact.xxx/simple'的配置,如果有就删掉对应别名配置,重载shell即可。 - 清理pip缓存:如果上述配置都没问题,执行
pip cache purge清空本地pip缓存,避免之前从CodeArtifact安装的包残留源指向导致pip优先请求私有源。
验证方法:所有排查操作做完后,执行
pip config list查看当前生效的所有pip配置,确认默认索引地址是公共PyPI源、无额外私有源配置,再执行安装命令就不会弹出CodeArtifact凭证提示。
内容的提问来源于stack exchange,提问作者octopi_cacti
相关产品推荐
相关产品推荐

