Azure Web App部署报错求助:cryptography要求setuptools 18.5及以上版本
嘿,这个Azure部署的坑我踩过好几次了!明明手动升级了setuptools还是报RuntimeError: cryptography requires setuptools 18.5 or newer, please upgrade to a newer version of setuptools,其实问题出在部署环境的依赖加载顺序或者缓存上,给你几个靠谱的解决办法:
1. 强制在requirements.txt顶部指定setuptools版本
直接把setuptools的版本要求放在requirements.txt最开头,这样部署脚本会优先升级它,再处理cryptography和其他依赖。比如:
setuptools>=65.0.0 cryptography>=41.0.0 # 你的其他依赖包...
这么做的核心是让pip先完成setuptools的升级,再安装对版本有要求的cryptography,从根源上避免版本不匹配。
2. 修改部署脚本,提前升级setuptools
如果默认的deploy.cmd没按预期执行,你可以自定义部署流程,在安装依赖前强制升级setuptools。找到部署用的deploy.cmd文件,在处理requirements.txt的步骤前添加这行命令:
python -m pip install --upgrade setuptools
这样能确保在安装任何依赖之前,setuptools已经被升级到满足要求的版本。
3. 检查并升级Azure App Service的Python版本
有些老版本的Python(比如3.6及以下)自带的setuptools版本本身就低于18.5,即使临时升级,也可能因为环境限制无法生效。你可以登录Azure门户,进入你的Web App,在「配置」->「常规设置」里检查Python版本,尽量选择3.8及以上的版本,这些版本自带的setuptools通常已经满足cryptography的要求,能减少这类冲突。
4. 清除Azure部署缓存
Azure有时候会缓存之前的依赖环境,导致新安装的setuptools没被正确加载。你可以在Azure门户的「部署中心」->「高级选项」里,点击「清除缓存」,然后重新触发部署,确保部署环境是完全干净的。
附上你提供的部署日志片段:
Command: "D:\home\site\deployments\tools\deploy.cmd"
Handling python deployment.
Detected requirements.txt. You can skip...
内容的提问来源于stack exchange,提问作者Ingrid Stoleru

