Conda build报错Aborting implicit building of eggs如何解决
构建报错核心原因
- 构建脚本使用了已被新版setuptools废弃的安装命令:你在
build.script中配置的python setup.py install -f是旧版setuptools的安装方式,新版setuptools已明确废弃该接口,默认拦截隐式egg构建流程,直接抛出Aborting implicit building of eggs错误,错误日志里的SetuptoolsDeprecationWarning也明确提示需要改用pip等标准构建工具。 - Conda依赖分层配置错误:
jupyter-packaging、setuptools、wheel、pip这类Python构建时依赖属于host段依赖,你错放到了build段,conda构建时build段仅提供系统级编译工具,host段才是Python包构建安装过程中实际调用的依赖环境,直接导致构建时调用的工具链版本不符合要求。 - source段配置冲突:同时配置了
path: .(本地源码路径)和git_url/git_rev(远程Git拉取配置),本地构建时容易引入冗余未跟踪文件干扰构建流程。 - 缺失前端构建必要依赖:JupyterLab扩展需要Node.js环境编译前端静态资源,你当前的依赖列表中完全没有配置
nodejs,哪怕修复安装命令,后续前端构建阶段也会直接失败。
修复步骤
- 替换构建脚本为标准PEP517安装命令,修改
build段配置:
build: noarch: python script: {{ PYTHON }} -m pip install . -vv --no-deps --no-build-isolation number: 0
这里
{{ PYTHON }}是conda-build内置的当前构建环境Python解释器路径变量,--no-deps禁止pip自动安装依赖(依赖全部由conda配方管理),--no-build-isolation使用conda host段预装的构建依赖,不额外创建虚拟构建环境。
- 调整
requirements段依赖分层,补全缺失的构建依赖:
requirements: host: - python >=3.7 - pip - setuptools >=40.8.0 - wheel - jupyter-packaging >=0.7.9,<0.9 - jupyterlab >=3.0.0 - nodejs >=14 run: - python >=3.7 - jupyterlab >=3.0.0
- 清理
source段冲突配置:如果用本地源码构建就删除git相关配置,仅保留path: .;如果从远程仓库拉取构建就删除path: .,保留git相关配置即可。本地开发场景推荐用以下配置:
source: path: .
- 可选优化:如果后续要升级jupyter-packaging到1.0以上版本,需要把setup.py中已废弃的
install_npm调用替换为官方推荐的npm_builder+wrap_installers写法,避免后续版本兼容报错。
配置修改完成后重新执行conda build .即可正常完成构建,构建完成后可通过conda install --use-local theme-material-darcula命令测试本地包安装。
内容的提问来源于stack exchange,提问作者Anurag Dhadse
相关产品推荐
相关产品推荐

