Python 重写SCons缓存复制函数

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()._

我试图找出当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()._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
成功了