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 脚本方法
在 python3 中使用 importlib 动态导入时出错