符号链接如何影响Python查找模块的方式?

符号链接如何影响Python查找模块的方式?,python,Python,环境变量PYTHONPATH设置为$HOME/lib/python $PYTHONPATH中的文件树如下所示 foo/ __init__.py bar.py 两个文件都是空的 现在,我创建了一个简单的脚本,其中包含 #!/usr/bin/env python print __file__ import bar 并将其另存为baz.py。如果我在其他地方运行脚本 在$PYTHONPATH/foo中,它找不到模块栏 但是,如果我将文件移动到$PYTHONPAT

环境变量
PYTHONPATH
设置为
$HOME/lib/python

$PYTHONPATH
中的文件树如下所示

foo/
    __init__.py
    bar.py         
两个文件都是空的

现在,我创建了一个简单的脚本,其中包含

#!/usr/bin/env python

print __file__
import bar
并将其另存为
baz.py
。如果我在其他地方运行脚本 在
$PYTHONPATH/foo
中,它找不到模块

但是,如果我将文件移动到
$PYTHONPATH/foo
并创建符号链接 对于那个文件,我可以在任何地方运行它。例如:

$ cd /tmp
$ ln -s $PYTHONPATH/foo/baz.py baz
$ ./baz
./baz
$

然而,
\uu文件
设置为
/baz
。那么Python是如何找到模块栏的呢?

如果
foo
在PYTHONPATH中,那么来自foo导入栏的
应该可以在任何地方工作

符号链接解析为其指向的路径。然后Python获取实际文件,并开始导入逻辑