读取配置文件以填充 conanfile.py 中的包名称

问题描述

我的存储库根目录中有一个 conanfile.py。旁边是一个配置文件。为了不重复我自己,我想在我的 conanfile.py 中读取这个配置文件并填充 ConanFile 对象的一些属性包括包的 name

class MyConan(ConanFile):
    name = # ... load from configuration file

conanfile.py 是从多个位置执行的,我还没有找到一致的方法来找出我的配置文件的位置。在 repo 中执行时,我可以使用 __file__。然而,在柯南缓存中,我不知道如何将我的配置文件放入 export 文件夹或如何在类的初始化期间尽早检索导出的源目录。甚至可以在conanfile.py中实现元数据的加载吗?

解决方法

从文件 data.json 中删除只读标志后,解决方案实际上非常简单和直接(否则导出将失败并显示“权限被拒绝”,至少在 Windows 上):

import json
import os

from conans import ConanFile,load


class MyConan(ConanFile):
    exports = "data.json"

    def init(self):
        data = json.loads(load(os.path.join(self.recipe_folder,"data.json")))
        self.name = data["name"]

此处记录了此解决方案:https://docs.conan.io/en/latest/reference/conanfile/methods.html#init