Python导入Jacobi迭代自定义函数调用出现旧输入执行结果问题排查
问题原因
你遇到的异常核心是Python加载的Jacobi_Iteration模块不是你修改后的最新版本,常见诱因有3种:
- 字节码缓存未更新:Python导入模块时会自动在
__pycache__目录生成后缀为.pyc的字节码缓存文件,下次运行时如果检测到源码修改时间晚于缓存,才会重新编译源码。你删除调用语句后如果缓存未更新,Python依旧会执行旧缓存里的逻辑,输出旧参数的运行结果。 - 导入路径错误:Python的模块导入存在优先级,如果你当前Python环境的其他路径下存在同名的旧版
Jacobi_Iteration.py文件,会优先加载旧版本,而非你当前目录下修改后的文件。 - IDE缓存未清理:如果你使用PyCharm、VSCode等IDE运行代码,部分IDE的增量编译机制会缓存旧版本的运行文件,即使你修改了源码也不会自动同步。
解决方案
- 第一步先删除当前工作目录下的
__pycache__文件夹,再重新运行程序,触发Python重新编译最新的源码。 - 如果问题依旧存在,可在
file2的导入语句后加入以下代码,确认实际导入的模块路径是否和你修改的文件路径一致:
import Jacobi_Iteration print(Jacobi_Iteration.__file__)
如果打印的路径不对,调整Python的模块导入优先级,或者删除其他路径下的同名旧文件即可。
- 若使用IDE运行,清理IDE的项目缓存后重启即可:比如PyCharm可点击
File > Invalidate Caches清理缓存。
内容的提问来源于stack exchange,提问作者Abdo Aboelnaga
相关产品推荐
相关产品推荐

