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

Conan 2.0.13中set_version()未触发,conan create报版本未指定错误

Conan 2.0.13 set_version()未触发导致版本错误问题

Conan版本:2.0.13
我在conan recipe中定义了set_version()方法,用于通过外部脚本设置包版本。但执行conan create .生成包时,出现错误:ERROR: conanfile didn't specify version。看起来必须使用--version参数才能正常运行,且set_version()未被调用。

已知信息:

  • --version是Conan的可选参数
  • conanfile中已定义set_version()方法
  • 按预期,执行conan create或conan export时应自动调用set_version()

补充代码:

def set_version(self):
    if self.version:
        return
    version_script = self.recipe_folder / "scripts" / "version"
    self.version = check_output([version_script], text=True).strip()

问题排查与解决办法

  1. 确认方法定义位置
    必须确保set_version()是定义在ConanFile类的内部,而非类外或其他错误位置。位置错误会导致Conan无法识别该方法,自然不会触发调用。

  2. 验证脚本路径与权限

    • 检查version_script的路径是否正确,确保scripts/version脚本存在于recipe文件夹下。可在方法内添加日志打印路径进行验证:
      from conan import ConanFile
      from conan.tools.files import check_output
      import os
      
      class MyRecipe(ConanFile):
          def set_version(self):
              if self.version:
                  return
              version_script = os.path.join(self.recipe_folder, "scripts", "version")
              self.output.info(f"版本脚本路径: {version_script}")
              self.version = check_output([version_script], text=True).strip()
      
    • 确保version脚本具备可执行权限(Linux/macOS下执行chmod +x scripts/version),否则脚本无法运行,check_output会抛出异常,导致self.version未被赋值,最终触发版本缺失错误。
  3. 捕获方法执行异常
    Conan 2.x中set_version()确实会在conan create/conan export时自动调用,但如果方法执行过程中出现未捕获的异常,Conan会终止方法执行,导致版本未被设置。可添加异常捕获打印详细信息:

    def set_version(self):
          if self.version:
              return
          try:
              version_script = self.recipe_folder / "scripts" / "version"
              self.version = check_output([version_script], text=True).strip()
          except Exception as e:
              self.output.error(f"获取版本失败: {str(e)}")
              raise
    
  4. 排查版本覆盖逻辑
    检查recipe中是否有其他代码(如init()方法或其他钩子)修改或清空self.version,导致set_version()设置的版本被覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:15:05