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

使用Conan 1.55.0执行export-pkg遇FileNotFoundError,文件未同步至缓存求助

问题排查:Conan export-pkg 文件未复制到缓存

环境与操作信息

  • Conan版本:1.55.0
  • 执行命令:conan export-pkg -f <conan_file_path.py> <artifactory recipe>
  • Conan包定义文件(conan.py)中package方法代码:
self.copy('*', src=f'{path(os.getcwd()).parent.parent}', dst='CommonTracker', excludes='.gitkeep', ignore_case=True)

问题现象

近期执行打包时触发FileNotFoundError,提示Conan缓存中缺少项目已存在的HTML文件;尝试在excludes参数添加*.html无效;更换机器后报错变为缺少某个cpp文件,此前代码一直正常运行。

排查建议

  1. 修复工作目录依赖的路径问题
    你当前用os.getcwd().parent.parent作为src路径,完全依赖执行conan export-pkg时的工作目录,一旦执行位置变化(比如脚本调用、终端路径切换),路径就会指向错误目录。改用Conan提供的固定路径变量,比如文件在源码目录就用self.source_folder,在构建目录就用self.build_folder,彻底消除工作目录依赖。

  2. 检查文件权限与锁定状态
    确认缺失的HTML、cpp文件是否存在权限问题(比如当前用户无读取权限、文件设为只读),或者被其他进程锁定,导致Conan无法复制到缓存。

  3. 清理Conan缓存重试
    执行conan cache clean清空缓存,再重新运行export-pkg命令,排除缓存损坏、旧文件残留冲突的可能。

  4. 验证通配符匹配逻辑
    检查ignore_case=True在当前操作系统下的生效情况,部分大小写敏感的系统中,通配符*可能无法匹配到目标文件。可以尝试明确指定文件类型(比如self.copy('*.html', ...))进行测试,确认是否是通配符匹配的问题。

  5. 排查文件忽略规则
    检查项目根目录的.gitignore文件,以及Conan全局忽略配置,确认缺失的文件是否被规则排除,导致Conan扫描时无法识别这些文件。

  6. 核对环境与目录结构变更
    确认近期是否有系统环境(Python版本、操作系统更新)或项目目录结构的改动,这些变化可能影响os.getcwd()的返回值或文件扫描逻辑,对比稳定环境的目录结构差异。

内容的提问来源于stack exchange,提问作者R.K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:15