关于python的import机制
  • 板块学术版
  • 楼主xhz123456789
  • 当前回复3
  • 已保存回复3
  • 发布时间2025/7/27 19:37
  • 上次更新2025/7/28 09:21:13
查看原帖
关于python的import机制
1045028
xhz123456789楼主2025/7/27 19:37

我在尝试使用 monkey patching 修改 pip 内部逻辑时,有些部分无法成功 patch。似乎与 pip._internal.operations.prepare.RequirementPreparer 有关。

我构造了一个类似的例子:

# a.py
def fun1():
    print("fun1")

def call_fun1():
    fun1()
# b.py
from a import fun1,call_fun1
def fun2():
    print("fun2")
def patch():
    import a
    a.fun1=fun2
patch()
fun1() #这里无法成功替换
call_fun1() #这里成功执行了 fun2

我希望的效果是两次均输出fun2,但实际上输出:

fun1
fun2

为什么其中一次会无法成功替换

2025/7/27 19:37
加载中...