部署Django应用至Railway遇botocore依赖错误(因boto3)
解决方案
1. 对齐本地与部署环境的Python版本
在项目根目录创建 runtime.txt 文件,写入你本地正在使用的Python版本(例如 python-3.10.12),强制Railway使用和本地一致的Python版本。这样botocore的依赖约束会和本地环境匹配,不会触发版本冲突。
2. 明确指定urllib3兼容版本
如果不想调整Python版本,直接在 requirements.txt 中锁定urllib3的版本范围,满足botocore的依赖要求:
urllib3>=1.25.4,<1.27 boto3 # 其他项目依赖
部署时会优先安装符合约束的urllib3版本,解决冲突问题。
3. 用pip-tools锁定全量依赖(推荐)
通过pip-compile生成精确的依赖清单,确保本地和部署环境的依赖完全一致:
- 安装pip-tools:
pip install pip-tools - 创建
requirements.in文件,只列出你的直接依赖:boto3 # 其他项目依赖 - 运行命令生成锁定版本的
requirements.txt:pip-compile requirements.in - 部署时使用生成的
requirements.txt安装依赖,彻底消除跨环境的版本差异。
报错根源
本地Python版本≥3.10时,botocore对urllib3的约束是<2.0;但Railway使用的Python版本<3.10,对应的botocore版本要求urllib3必须在1.25.4~1.27区间内。你的依赖清单未指定urllib3版本,导致部署时安装了超出范围的版本,触发依赖冲突。
内容的提问来源于stack exchange,提问作者Wilmi Vizcaino
相关产品推荐
相关产品推荐

