conda-build构建Python3.8包时如何跳过依赖兼容性检查
conda-build构建时跳过依赖兼容性校验的可行方法
注意:直接跳过依赖兼容性校验构建出的包不存在官方兼容性保证,后续安装、运行时大概率出现依赖缺失、版本不匹配的报错,非特殊场景不建议使用,优先推荐调整依赖约束解决冲突。
可直接跳过校验的操作方法
- 复用预配置的现有构建环境,跳过自动依赖求解流程
提前手动创建好构建用的虚拟环境,安装好所有需要的依赖(包括对应版本的python、numpy、mkl等),构建时指定直接复用该环境,不重新创建环境、不做全量依赖求解,命令参考:conda-build xxx --python 3.8 --no-create-env --prefix /path/to/your/prepared/build/env - 追加参数关闭依赖检查、测试环节校验
构建命令加上--no-deps和--no-test参数,前者会让conda-build跳过构建阶段的依赖自动安装、兼容性校验步骤,后者会跳过构建完成后的测试环节依赖检查,执行前需要确保当前激活环境已经装齐所有构建需要的依赖,命令参考:conda-build xxx --python 3.8 --no-deps --no-test
更稳妥的冲突解决方式(替代直接跳过校验)
如果不需要强制跳过检查,优先通过调整配置解决版本冲突,避免构建出不可用的包:
- 调整recipe下
meta.yaml的依赖版本约束,对冲突的numpy、mkl、expat等包放宽版本区间,不要钉死与python 3.8不兼容的过旧版本 - 构建时明确指定渠道优先级,追加
--override-channels参数搭配你需要使用的渠道(比如defaults、conda-forge或内部私有渠道),避免多渠道混合带来的系统依赖(如vs2008_runtime)版本规则冲突 - 对不需要强校验的系统级依赖,可以在
meta.yaml的build配置段添加ignore_run_exports字段,忽略指定包的运行时导出约束,配置参考:build: ignore_run_exports: - expat - vs2008_runtime
所有跳过校验生成的conda包,需要自行完成安装、功能运行验证,分发给其他用户使用时需要额外标注手动安装依赖的要求。
内容的提问来源于stack exchange,提问作者Jianfeng Sun
相关产品推荐
相关产品推荐

