AWS SageMaker Notebook安装gcc提示环境不一致如何解决
AWS SageMaker安装Prophet触发conda环境不一致报错解决方案
问题场景
- 开发环境:AWS SageMaker Jupyter Notebook,选用
conda_python3内核 - 开发目标:使用Prophet库实现时间序列预测,安装Prophet前需配置gcc环境
- 故障现象:在Notebook中执行
%conda install gcc时,触发环境不一致报错,依赖求解过程长时间卡顿,手动中断后报错如下:
Collecting package metadata (current_repodata.json): done Solving environment: / The environment is inconsistent, please check the package plan carefully The following packages are causing the inconsistency: - conda-forge/noarch::nbclient==0.5.2=pyhd8ed1ab_0 - conda-forge/linux-64::matplotlib==3.3.4=py36h5fab9bb_0 - conda-forge/noarch::qdarkstyle==2.8.1=pyhd8ed1ab_2 - conda-forge/linux-64::scikit-image==0.16.2=py36hb3f55d8_0 - conda-forge/noarch::python-language-server==0.36.2=pyhd8ed1ab_0 - conda-forge/linux-64::widgetsnbextension==3.5.1=py36h5fab9bb_4 - conda-forge/noarch::flake8==3.8.4=py_0 - conda-forge/noarch::ipywidgets==7.6.3=pyhd3deb0d_0 - conda-forge/noarch::typing-extensions==3.7.4.3=0 - conda-forge/noarch::path.py==12.5.0=0 - conda-forge/noarch::dask==2021.2.0=pyhd8ed1ab_0 - conda-forge/noarch::nbformat==5.1.2=pyhd8ed1ab_1 - conda-forge/linux-64::path==15.1.2=py36h5fab9bb_0 - conda-forge/linux-64::nbconvert==6.0.7=py36h5fab9bb_3 - conda-forge/linux-64::distributed==2021.2.0=py36h5fab9bb_0 - conda-forge/noarch::anaconda-client==1.7.2=py_0 - conda-forge/noarch::aioitertools==0.7.1=pyhd8ed1ab_0 - conda-forge/linux-64::matplotlib-base==3.3.4=py36hd391965_0 - conda-forge/linux-64::pluggy==0.13.1=py36h5fab9bb_4 - conda-forge/noarch::black==20.8b1=py_1 - conda-forge/linux-64::blaze==0.11.3=py36_0 - conda-forge/noarch::pyls-spyder==0.3.2=pyhd8ed1ab_0 - conda-forge/noarch::odo==0.5.1=py_1 - conda-forge/linux-64::keyring==22.0.1=py36h5fab9bb_0 - conda-forge/noarch::anaconda-project==0.9.1=pyhd8ed1ab_0 - conda-forge/noarch::importlib_metadata==3.7.0=hd8ed1ab_0 - conda-forge/linux-64::jupyter==1.0.0=py36h5fab9bb_6 - conda-forge/noarch::jupyterlab_server==2.3.0=pyhd8ed1ab_0 - conda-forge/noarch::seaborn-base==0.11.1=pyhd8ed1ab_1 - conda-forge/noarch::imageio==2.9.0=py_0 - conda-forge/noarch::numpydoc==1.1.0=py_1 - conda-forge/linux-64::yarl==1.6.3=py36h8f6f2f9_1 - conda-forge/noarch::jsonschema==3.2.0=py_2 - conda-forge/noarch::flask==1.1.2=pyh9f0ad1d_0 - conda-forge/noarch::seaborn==0.11.1=hd8ed1ab_1 - conda-forge/noarch::helpdev==0.7.1=pyhd8ed1ab_0 - conda-forge/linux-64::nb_conda==2.2.1=py36h5fab9bb_4 - conda-forge/noarch::nbclassic==0.2.6=pyhd8ed1ab_0 - conda-forge/noarch::sphinx==3.5.1=pyhd8ed1ab_0 - conda-forge/noarch::jupyterlab_launcher==0.13.1=py_2 - conda-forge/linux-64::spyder==4.2.0=py36h5fab9bb_0 - conda-forge/linux-64::importlib-metadata==3.7.0=py36h5fab9bb_0 - conda-forge/linux-64::pytest==6.2.2=py36h5fab9bb_0 - conda-forge/noarch::pyls-black==0.4.6=pyh9f0ad1d_0 / ^C failed with initial frozen solve. Retrying with flexible solve. CondaError: KeyboardInterrupt Note: you may need to restart the kernel to use updated packages.
故障根因
报错列出的所有冲突包全是Python3.6版本的依赖,说明当前选用的conda_python3是SageMaker预置的老旧Python3.6环境,出厂时就混合了conda默认源和conda-forge源的包,依赖树已经损坏。直接执行conda install gcc会触发全量依赖一致性校验,不仅求解速度极慢,还会报环境不一致错误。
另外SageMaker底层的Amazon Linux系统本身已经预装了gcc环境,完全满足Prophet的编译要求,不需要重复通过conda安装gcc。
解决方法
按优先级从高到低选即可:
方案1:切换到新版预置内核(最省事,零冲突)
老版py36环境的混源问题是出厂自带的,没必要硬修:
- 关闭当前Notebook,在启动页选择Python3.10及以上版本的
conda_python3内核新建Notebook - 新环境已经预装了完整的编译工具链,不需要单独装gcc,直接执行
%conda install -c conda-forge prophet -y即可完成安装,重启内核后就能正常导入使用
方案2:复用系统gcc,跳过conda依赖校验(适合必须用老环境的场景)
如果不能切换当前py36内核,不用在conda里装gcc:
- 先执行
!gcc --version验证系统gcc存在,正常会输出版本号信息 - 跳过conda严格依赖校验直接安装Prophet:
%conda install -c conda-forge prophet --no-deps -y - 补装Prophet运行必需的Python依赖:
%pip install pystan==2.19.1.1 numpy pandas matplotlib - 重启内核即可正常使用Prophet
方案3:修复老环境依赖(耗时长,不推荐)
如果一定要在当前老环境里通过conda安装gcc,先统一源再修复依赖:
- 先配置conda仅使用conda-forge源,开启严格通道优先级:
!conda config --remove-key channels !conda config --add channels conda-forge !conda config --set channel_priority strict - 执行全量环境更新修复损坏的依赖树,过程大概10-15分钟,不要手动中断:
%conda update --all -y - 修复完成后再执行
%conda install gcc -y就不会报环境不一致错误
避坑提示
不要在老版py36的conda环境里强行求解依赖,很容易把Jupyter本身的依赖搞坏,导致内核连接失败、Notebook无法使用的问题。
内容的提问来源于stack exchange,提问作者oligato
相关产品推荐
相关产品推荐

