0

環境変数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はどのようにしてモジュールバーを見つけるのでしょうか?

4

1 に答える 1

0

fooがPYTHONPATHにある場合は、from foo import barどこでも機能するはずです。

シンボリックリンクは、それが指すパスに解決されます。次に、Pythonが実際のファイルを取得し、インポートロジックが開始されます。

于 2013-02-19T10:54:19.760 に答える