问题描述
我的存储库根目录中有一个 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