环境变量PYTHONPATH
设置为$HOME/lib/python
。
$PYTHONPATH
中的文件树看起来像这样
foo/
__init__.py
bar.py
这两个文件都是空的。
现在我创建一个包含
的简单脚本#!/usr/bin/env python
print __file__
import bar
并将其另存为baz.py
。如果我在其他地方运行脚本
在$PYTHONPATH/foo
中找不到模块bar
。
但是,如果我将文件移动到$PYTHONPATH/foo
并创建符号链接
到那个文件,我可以从任何地方运行它。例如:
$ cd /tmp
$ ln -s $PYTHONPATH/foo/baz.py baz
$ ./baz
./baz
$
但__file__
已设为./baz
。那么Python如何找到模块栏?
答案 0 :(得分:0)
如果foo
在PYTHONPATH中,那么from foo import bar
应该可以在任何地方使用。
符号链接被解析为它指向的路径。然后Python获取真实文件并开始导入逻辑。