2009-07-21 60 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

相關問題