0

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

中的文件树$PYTHONPATH看起来像这样

foo/
    __init__.py
    bar.py         

两个文件都是空的。

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

#!/usr/bin/env python

print __file__
import bar

并将其另存为baz.py. 如果我在其中以外的任何地方运行脚本,$PYTHONPATH/foo则无法找到 module bar

但是,如果我将文件移动到该文件$PYTHONPATH/foo并创建指向该文件的符号链接,则可以从任何地方运行它。例如:

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

然而__file__设置为./baz. 那么Python是如何找到模块栏的呢?

4

1 回答 1

0

如果foo在 PYTHONPATH 中,那么from foo import bar应该可以在任何地方工作。

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

于 2013-02-19T10:54:19.760 回答