2009-07-21 59 views
7

如果我有文件x.py和y.py。而y.py是x.py的链接(符号或硬)。python - 导入一个文件是一个符号链接

如果我将两个模块都导入到我的脚本中。它会导入一次还是假定它们都是不同的文件并将其导入两次。

它究竟做了什么?

回答

9

Python会导入它两次。

链接是文件系统的概念。对于Python解释器,x.pyy.py是两个不同的模块。

 
$ echo print \"importing \" + __file__ > x.py 
$ ln -s x.py y.py 
$ python -c "import x; import y" 
importing x.py 
importing y.py 
$ python -c "import x; import y" 
importing x.pyc 
importing y.pyc 
$ ls -F *.py *.pyc 
x.py x.pyc [email protected] y.pyc 
10

你只需要在您的脚本本身是一个符号链接,在这种情况下sys.path中的第一项将是包含链接的目标目录的情况下谨慎。

+0

啊,是的,我只是碰到了那个。我在我的'部署'区域指向一个脚本,它在开发过程中是我正在编辑的原始副本的符号链接。花了我很长时间来弄清楚为什么python无法找到其他直接位于符号链接处的模块。其实很烦人。 – 2011-09-15 20:44:47

相关问题