python importlib,如何使动态加载文件的缓存无效

Posted

技术标签:

【中文标题】python importlib,如何使动态加载文件的缓存无效【英文标题】:python importlib, how to invalidate cache of dynamically loaded file 【发布时间】:2017-01-05 22:09:51 【问题描述】:

鉴于此代码,我如何告诉 python 不使用缓存的源或重新加载?

import importlib.util

spec = importlib.util.spec_from_file_location('test', '~/myfile.py')
test = importlib.util.module_from_spec(spec)
spec.loader.exec_module(test)

test.do_stuff()

当 myfile.py 的内容发生变化时,它没有被拾取,我假设是因为它被缓存了。调用 importlib.invalidate_caches() 没有帮助,importlib.reload 导致错误提示 test is not in sys.modules

【问题讨论】:

importlib.invalidate_caches() 确实有效。你没有向我们展示你是如何尝试使用它的。 【参考方案1】:

使用'~/myfile.py' 将不起作用。 您必须使用这样的相对路径:'myfile.py' 或像这样的绝对路径:'/home/your_name/python_code/myfile.py'

【讨论】:

以上是关于python importlib,如何使动态加载文件的缓存无效的主要内容,如果未能解决你的问题,请参考以下文章

编程艺术python importlib 动态调用 py 脚本方法

Python importlib(动态导入模块)

在 python3 中使用 importlib 动态导入时出错

Python Importlib.import_module动态导入模块

python3使用importlib来重复加载模块

[Python系列-26]:importlib - 动态导入其他python模块库