Python 重写SCons缓存复制函数
我试图找出当SCON将工件从缓存目录(由CacheDir提供)复制到已使用的硬链接时,如何重写该行为 我目前的尝试Python 重写SCons缓存复制函数,python,caching,scons,build-system,hardlink,Python,Caching,Scons,Build System,Hardlink,我试图找出当SCON将工件从缓存目录(由CacheDir提供)复制到已使用的硬链接时,如何重写该行为 我目前的尝试 def link_or_copy_file(class_instance, src, dst): # do hardlinking instead... SCons.Defaults.DefaultEnvironment()._copy_from_cache = link_or_copy_file SCons.Defaults.DefaultEnvironment()._
def link_or_copy_file(class_instance, src, dst):
# do hardlinking instead...
SCons.Defaults.DefaultEnvironment()._copy_from_cache = link_or_copy_file
SCons.Defaults.DefaultEnvironment()._copy2_from_cache = link_or_copy_file
env = Environment()
env._copy_from_cache = link_or_copy_file
env._copy2_from_cache = link_or_copy_file
对以后使用env
没有影响。从未调用函数link\u或\u copy\u file
。怎么了
难道不能用这种方式重写Python类成员函数吗
更新:还要注意,我是在调用了
env.Decider()
之后这样做的,因为此函数可能会覆盖成员\u copy\u from\u cache
和\u copy2\u from\u cache
我们最终发现
import SCons.Environment
SCons.Environment.Environment._copy_from_cache = link_or_copy_file
SCons.Environment.Environment._copy2_from_cache = link_or_copy_file
成功了