AWS Amplify后端构建报错:invalid command 'egg_info'求助
AWS Amplify后端构建「invalid command 'egg_info'」错误排查与解决
问题背景
此前部署正常,仅进行UI修改后触发AWS Amplify后端构建错误,报错信息为「invalid command 'egg_info'」,已尝试更新Lambda函数目录下Pipfile中的setuptools至最新版本。
相关构建日志
2023-06-29T00:41:53.568Z [WARNING]: created virtual environment CPython3.8.0.final.0-64 in 734ms creator CPython3Posix(dest=/root/.local/share/virtualenvs/lambdafunction-TMn4ayDM, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv) added seed packages: pip==23.1.2, setuptools==67.8.0, wheel==0.40.0 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator 2023-06-29T00:41:53.574Z [WARNING]: ✔ Successfully created virtual environment! 2023-06-29T00:41:53.604Z [WARNING]: Virtualenv location: /root/.local/share/virtualenvs/lambdafunction-tyBXm4FQ 2023-06-29T00:31:41.678Z [INFO]: Installing dependencies from Pipfile.lock (3a12ae)... 2023-06-29T00:31:41.712Z [WARNING]: usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: setup.py --help [cmd1 cmd2 ...] or: setup.py --help-commands or: setup.py cmd --help error: invalid command 'egg_info' 2023-06-29T00:31:41.811Z [WARNING]: ✖ There was an error initializing your environment. 2023-06-29T00:31:41.812Z [INFO]: 🛑 Command failed with exit code 1: pipenv install
当前amplify.yml后端配置
backend: phases: preBuild: commands: - ln -fs /usr/local/bin/pip3.8 /usr/bin/pip3 - ln -fs /usr/local/bin/python3.8 /usr/bin/python3 - python3 -m pip install --upgrade pip - python3 -m pip install --upgrade setuptools wheel - python3 -m pip install --upgrade pipenv build: commands: - amplifyPush --simple
解决方案
锁定虚拟环境内的setuptools版本
全局升级setuptools后,Pipenv创建虚拟环境时仍可能使用不兼容的版本。在Lambda函数目录的Pipfile中明确指定与日志中虚拟环境初始化时一致的setuptools版本:[packages] # 保留原有依赖,新增以下行 setuptools = "==67.8.0"执行命令重新生成锁定文件并提交:
pipenv lock git add Pipfile Pipfile.lock git commit -m "Lock setuptools version"在preBuild阶段强制升级虚拟环境内的setuptools
修改amplify.yml,在构建前提前进入Lambda函数目录,创建虚拟环境并强制升级setuptools:backend: phases: preBuild: commands: - ln -fs /usr/local/bin/pip3.8 /usr/bin/pip3 - ln -fs /usr/local/bin/python3.8 /usr/bin/python3 - python3 -m pip install --upgrade pip - python3 -m pip install --upgrade setuptools wheel - python3 -m pip install --upgrade pipenv # 新增:进入Lambda函数目录并升级虚拟环境内的setuptools - cd ./amplify/backend/function/YourLambdaFunctionName # 替换为你的Lambda函数路径 - pipenv install --skip-lock - pipenv run pip install --upgrade setuptools==67.8.0 build: commands: - amplifyPush --simple排查损坏的第三方依赖
部分第三方依赖的setup.py可能与新版setuptools不兼容。逐个移除Pipfile中的非核心依赖,重新触发构建,定位出问题依赖后更换为兼容版本。清理Amplify构建缓存
旧缓存可能残留冲突依赖。进入AWS Amplify控制台的构建页面,点击「Redeploy this version」并勾选「Clear cache」,重新执行构建。
内容的提问来源于stack exchange,提问作者Flobbinhood
相关产品推荐
相关产品推荐

