został uruchomiony top_level_script.py
i dostał wyjątek z śladu stosu, takich jak:znaczenie absolutnych/względem ścieżek na ścieżce pyton stosu
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
...
Należy zauważyć, że mmm/ttt/bbb/core.py
ma względną ścieżkę, natomiast ramy, powyżej i poniżej, że mają ścieżki bezwzględne . Ponadto nie ma wydruku z linii 17, w __init__
, a kod wywoływany był "stary". Właśnie to zmieniłem, ale stary kod został wywołany. Stąd wyjątek.
Nadal uważam, że mechanizmy importu Pythona są czasami mylące. Czy ktoś może wyjaśnić, co się dzieje z core.py
i jakie jest znaczenie, jeśli w ogóle, względnej ścieżki pokazanej w tej ramce?
Po pewnym majsterkowaniu, moja hipoteza brzmiała, że pyton w jakiś sposób nazywa się .pyc
(stąd nie ma źródła pokazanego w poniższej linii). Po majstrować przy pliku (tzn zmienia i zapisywania go), teraz uzyskać:
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
...
Teraz nie mogę odtworzyć efekt, ale nadal jestem ciekawy, czy ktoś wie, co może się wydarzyć.