You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2 Ubuntu环境conda build报错work文件不存在构建失败

问题根因

这个报错不是conda-build的文件类型校验bug,核心问题出在报错信息误导和配置/环境兼容问题上:
distutils/setuptools的报错信息存在强误导性:执行build_scripts阶段时,它会校验传入的所有脚本路径是否为普通文件,只要传入的是目录、失效软链接,就会统一抛出file does not exist错误,不会区分“路径完全不存在”和“路径存在但类型不符合要求”两种场景,这和你手动看到work目录实际存在的现象完全不冲突。

修复步骤

按优先级从高到低排查调整即可解决问题:

  • 修正meta.yaml配置错误
    你当前配置的entry_points项等号后多了一个多余空格,会导致入口点路径解析错误:
    # 错误写法
    - program_name= program_name.package_name:cli_main
    # 正确写法,等号前后不要加多余空格
    - program_name=program_name.package_name:cli_main
    
    同时核对source.path配置:如果meta.yaml存放在项目根目录下的recipe子文件夹,path: ..是正确配置;如果meta.yaml直接放在项目根目录,需要将该项改为path: .,否则会把上级目录内容拷入构建环境,触发路径识别混乱。
  • 检查项目打包配置
    打开项目内的setup.py、setup.cfg或pyproject.toml,重点检查scripts参数项,确认没有把项目根目录(构建时对应work目录)误加入脚本列表——distutils会把列表内所有项当成可执行脚本文件做校验,传入目录就会触发你看到的报错。如果项目内存在和work同名的脚本文件,确认该文件可读、路径配置正确。
  • 规避WSL2软链接兼容问题
    conda-build默认用软链接关联源码目录和构建work目录,WSL2环境下如果项目目录存放在Windows挂载盘(/mnt/开头的路径)、跨文件系统做构建,会出现软链接识别异常:手动ls能看到目录存在,但程序调用os.path.isfile()校验时会返回False,直接抛出文件不存在的错误。
    构建时加参数禁用软链接拷贝即可:
    conda build --no-softlinks --python 3.10 .
    
    注意所有构建相关的文件(项目源码、conda安装目录)都要放在WSL2的ext4原生分区(/home/路径下),不要放在Windows挂载分区下构建,跨文件系统会出现各类不可预期的权限、文件类型识别问题。
  • 清理缓存后重试
    之前失败的构建任务可能残留异常软链接或错误权限配置,先执行命令清理所有构建缓存:
    conda build purge
    
    清理完成后再重新执行构建命令,不要复用之前残留的构建工作目录。

内容的提问来源于stack exchange,提问作者AlexFraser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 07:01:59