柯南包管理器 - 如何在柯南安装期间删除文件夹?
Conan package manager - how to remove folders during conan install?
我有本地conanfile.py
消费一个包,包已经位于本地缓存(~/.conan/
)。
在 conanfile.py
中有一个 imports()
函数,我在其中将一些文件从包中复制到我的构建文件夹中。
我在不同目录中有两个同名文件,我将它们复制到同一目录并重命名其中一个。
在我这样做之后,我留下了一个我想删除的空目录,但无法从 conanfile.py
中找到这样做的方法,每次尝试似乎都是在文件获取之前删除文件夹运行。我的导入如下所示:
class SomeConanPkg(ConanFile):
name = "SomeName"
description = "SomeDesc"
requires = (
"SomePkg/1.0.0.0@SomeRepo/stable")
def imports(self):
# copy of 1st file
self.copy("somefile.dll", src=os.path.join("src"), dst=os.path.join(build_dest))
# copy of 2nd file to nested directory
self.copy("somefile.dll", src=os.path.join("src", "folder"), dst=os.path.join(build_dst, "folder"))
# move and rename the file to parent directory
shutil.copy2(os.path.join(build_dst, "folder", "somefile.dll"), os.path.join(build_dst, "renamed_file.dll"))
# now build_dst/folder is an empty directory
我曾尝试使用 conan tools.rmmdir()
或只是调用 shutil.rmmtree()
,但在文件被复制之前,它们似乎都 运行。
我还尝试添加一个 package()
或 deploy()
成员函数并在内部执行删除,但这些方法似乎根本 运行 (通过调试打印验证)。
有什么想法吗?
我结束了我们在包创建方面解决它。
根据需要重命名文件,然后使用它们
我有本地conanfile.py
消费一个包,包已经位于本地缓存(~/.conan/
)。
在 conanfile.py
中有一个 imports()
函数,我在其中将一些文件从包中复制到我的构建文件夹中。
我在不同目录中有两个同名文件,我将它们复制到同一目录并重命名其中一个。
在我这样做之后,我留下了一个我想删除的空目录,但无法从 conanfile.py
中找到这样做的方法,每次尝试似乎都是在文件获取之前删除文件夹运行。我的导入如下所示:
class SomeConanPkg(ConanFile):
name = "SomeName"
description = "SomeDesc"
requires = (
"SomePkg/1.0.0.0@SomeRepo/stable")
def imports(self):
# copy of 1st file
self.copy("somefile.dll", src=os.path.join("src"), dst=os.path.join(build_dest))
# copy of 2nd file to nested directory
self.copy("somefile.dll", src=os.path.join("src", "folder"), dst=os.path.join(build_dst, "folder"))
# move and rename the file to parent directory
shutil.copy2(os.path.join(build_dst, "folder", "somefile.dll"), os.path.join(build_dst, "renamed_file.dll"))
# now build_dst/folder is an empty directory
我曾尝试使用 conan tools.rmmdir()
或只是调用 shutil.rmmtree()
,但在文件被复制之前,它们似乎都 运行。
我还尝试添加一个 package()
或 deploy()
成员函数并在内部执行删除,但这些方法似乎根本 运行 (通过调试打印验证)。
有什么想法吗?
我结束了我们在包创建方面解决它。 根据需要重命名文件,然后使用它们