pythons中绝对/相对路径的意义

2024-06-28 19:33:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行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有一个相对路径,而它上面和下面的帧有绝对路径。另外,在__init__中,第17行没有打印输出,被调用的代码是“old”。我刚改了,但是旧代码被调用了。因此例外。在

我仍然发现Python的导入机制有时令人困惑。有人能解释一下core.py是怎么回事吗?如果有的话,这个框架中的相对路径的意义是什么?在

经过一些修改,我的假设是python以某种方式调用了.pyc(因此下面的行中没有显示源代码)。修改文件后(i

^{pr2}$

现在,我无法重现这种效果,但我仍然很好奇是否有人知道可能发生了什么。在


Tags: inpycorehometoplinescriptsome
1条回答
网友
1楼 · 发布于 2024-06-28 19:33:07

一般来说,Python对文件名的理解是透明的。在

每当Python执行import时,都会查询环境变量^{},并设置Python变量^{}。在

sys.path中的路径组件可以是绝对的或相对的。通用的相对路径名是.(当前工作目录)。在

如果在执行导入时,sys.path中找到的名称基于相对路径,则出现在堆栈跟踪中的文件名也将是相对的。我还认为,如果Python程序使用relative import,那么它也会作为相对文件名出现。在

相关问题 更多 >