读取配置文件以填充 conanfile.py 中的包名称
Read configuration file to populate name of package in conanfile.py
我的存储库根目录中有一个 conanfile.py
。旁边是一个配置文件。为了不再重复,我想在我的 conanfile.py
中读取这个配置文件并填充 ConanFile
对象的一些属性,包括包的 name
:
class MyConan(ConanFile):
name = # ... load from configuration file
conanfile.py
从多个位置执行,我还没有找到一致的方法来找出我的配置文件的位置。在 repo 中执行时,我可以使用 __file__
。然而,在 conan 缓存中,我不知道如何将我的配置文件放入 export
文件夹或如何在 class 初始化期间尽早检索导出的源目录。甚至可以在 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
我的存储库根目录中有一个 conanfile.py
。旁边是一个配置文件。为了不再重复,我想在我的 conanfile.py
中读取这个配置文件并填充 ConanFile
对象的一些属性,包括包的 name
:
class MyConan(ConanFile):
name = # ... load from configuration file
conanfile.py
从多个位置执行,我还没有找到一致的方法来找出我的配置文件的位置。在 repo 中执行时,我可以使用 __file__
。然而,在 conan 缓存中,我不知道如何将我的配置文件放入 export
文件夹或如何在 class 初始化期间尽早检索导出的源目录。甚至可以在 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