python运行失败找不到文件_当python的reload()找不到模块文件时会发生什么情况?...

编辑:哎呀,阿什维尼·乔杜里比我还快:)

在发布这篇文章之前应该做更多的研究。在

我将回答我自己的问题:希望你们中的一些人对此感兴趣。在

假设我已经导入了一次模块:import plop

如果plop.py和{}被删除:

^{pr2}$

但要小心!模块不会从模块dict中删除>>> print repr(sys.modules['plop'])

但是我可以手动删除它>>> del sys.modules['plop']

>>> import plop

ImportError: no module named plop

在这个导入错误的例子中:无论我在哪里已经导入了模块,代码仍然绑定到导入时选择的本地变量名-通常是模块名-。该模块仍然存在于我的运行时中。在

所以我又做了一点实验。在

如果在代码的某个地方,我碰巧从模块中导入了一个函数,不管重载是否有效,我仍然会有一个对旧函数的引用。在>>> from plop import somefunc

>>> somefunc()

i am the first version!

>>> # code is regenerated

>>> reload(plop)

>>> # should print "i am the second version!"

>>> somefunc()

i am the first version!

如果我使用plop.somefunc(),那么对于重新加载工作的情况,我会是最新的。在

我的结论是:当我重新加载模块时,我应该始终小心,重新导入我需要使用的任何东西,不管是模块还是模块字段。如果没能重新装弹,我应该清理一下系统模块迪克特

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值