You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pip安装Python库Boto3失败:网络不可达问题求助

解决EC2实例安装Boto3时的[Errno 101] Network is unreachable问题

我之前在EC2上部署Python环境时也碰到过一模一样的问题,其实这个网络不可达的报错,本质是哪怕你用的是本地的Boto3安装包,pip在安装过程中还是会自动去PyPI拉取Boto3的依赖组件(比如核心依赖botocore),而你的EC2实例目前没办法连通PyPI的服务器。下面是我整理的排查和解决步骤:

第一步:排查EC2的网络基础配置

先确认EC2实例的网络通路是否正常,这是问题的核心:

  • 检查安全组出站规则:确保你的EC2实例所属的安全组允许**HTTPS(443端口)**的出站流量,目标可以设为0.0.0.0/0(无特殊限制的话),或者PyPI官方的IP段。
  • 检查NACL(网络访问控制列表):如果实例在VPC私有子网中,NACL的出站规则也要允许443端口的流量通过,避免拒绝规则优先拦截。
  • 确认实例的公网访问能力:
    • 公有子网实例:检查是否分配了弹性公网IP(EIP),或者子网配置里的「自动分配公网IP」是否开启。
    • 私有子网实例:必须确保VPC配置了NAT网关,且子网路由表已将0.0.0.0/0的流量指向NAT网关,这样实例才能通过NAT访问公网。
  • 测试连通性:在EC2实例上执行以下命令,验证能否访问PyPI:
    curl https://pypi.org/simple/botocore/
    
    如果返回正常的HTML内容,说明网络通路没问题;如果还是报错,继续排查网络配置。

第二步:解决安装问题的两种方案

方案一:修复网络后正常安装

如果排查后修复了网络问题,直接用本地包安装即可,pip会自动拉取所需依赖:

# 安装tar.gz包
python -v -m pip install ./boto3-1.13.5.tar.gz
# 或者安装whl包
python -v -m pip install ./boto3-1.9.149-py2.py3-none-any.whl

如果默认PyPI源访问慢,也可以指定官方镜像源:

python -m pip install --index-url https://pypi.org/simple/ ./boto3-1.13.5.tar.gz

方案二:离线安装所有依赖(完全无需网络)

如果你的EC2实例确实无法连接公网,可采用离线安装的方式:

  1. 在有网络的本地机器/服务器上,下载Boto3指定版本及所有依赖包:
    # 下载1.13.5版本的所有依赖
    pip download boto3==1.13.5 --dest ./boto3-packages
    # 或者下载1.9.149版本
    pip download boto3==1.9.149 --dest ./boto3-packages
    
  2. 将下载好的包目录传到EC2实例(以scp为例,替换为你的密钥和实例信息):
    scp -i your-key-pair.pem -r ./boto3-packages ec2-user@your-ec2-ip:/home/ec2-user/
    
  3. 在EC2实例上执行离线安装命令,完全从本地目录读取依赖:
    python -m pip install --no-index --find-links ./boto3-packages boto3==1.13.5
    

第三步:验证安装成功

安装完成后,进入Python交互模式验证:

python

输入import boto3,如果没有返回ModuleNotFoundError,就说明安装成功了。

内容的提问来源于stack exchange,提问作者Chandler Cree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:42:57