2009-07-21 23 views
7

私はファイルx.pyとy.pyを持っています。 y.pyはx.pyのリンク(シンボリックまたはハード)です。python - シンボリックリンクであるファイルをインポートする

私のスクリプトに両方のモジュールをインポートする場合。それを一度インポートするか、両方が別のファイルであると想定して2回インポートしますか?

正確には何ですか?

答えて

9

Pythonはそれを2回インポートします。

リンクはファイルシステムの概念です。 Pythonインタプリタでは、x.pyy.pyは2つの異なるモジュールです。

 
$ 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がシンボリックリンクが存在する場所に直接座っている他のモジュールを見つけることができなかった理由を理解するのに長い時間をかけました。むしろ迷惑です。 –

関連する問題