我跑top_level_script.py
了一个异常,堆栈跟踪如下:
File "top_level_script.py", line 114, in main
…
File "top_level_script.py", line 91, in func1
...
File "top_level_script.py", line 68, in func2
**kwargs)
File "/home/max/.../cccc/ffff/mmmm.py", line 69, in some_func
obj = SomeClass(…)
File "mmm/ttt/bbb/core.py", line 17, in __init__
File "/home/max/.../pppp/pppp.py", line 474, in func
...
File "/home/max/.../pppp/pppp.py", line 355, in some_func
...
请注意,它mmm/ttt/bbb/core.py
具有相对路径,而其上方和下方的框架具有绝对路径。此外,第 17 行的 in 中没有打印出来__init__
,并且被调用的代码是“旧的”。我刚刚更改了它,但是旧代码被调用了。因此例外。
我仍然发现 Python 的导入机制有时令人困惑。任何人都可以阐明core.py
该框架中显示的相对路径的情况以及重要性(如果有的话)吗?
经过一番修修补补,我的假设是 python 以某种方式调用了.pyc
(因此下面的行中没有显示源)。在修改文件(即更改并保存它)之后,我现在得到:
File "top_level_script.py", line 114, in main
…
File "top_level_script.py", line 91, in func1
...
File "top_level_script.py", line 68, in func2
**kwargs)
File "/home/max/.../cccc/ffff/mmmm.py", line 69, in some_func
obj = SomeClass(…)
File "/home/max/.../mmm/ttt/bbb/core.py", line 17, in __init__
...
File "/home/max/.../pppp/pppp.py", line 474, in func
...
File "/home/max/.../pppp/pppp.py", line 355, in some_func
...
现在,我无法重现效果,但我仍然很好奇是否有人知道可能发生了什么。