同じフォルダー内の別のファイルにファイルをインポートする場合。
ファイル構造:
.
├── b
│ ├── c.py
│ ├── d.py
│ └── __init__.py
└── __init__.py
d.pyで:
import b.c
print "import successfully"
更新 1 :
両方使ってる
python d.py
と:
python b/d.py
プログラムは実行できず、ImportError を発生させます。
問題を解決するために、私は使用します
sys.path.insert(0, realpath(path_join(dirname(__file__), '../')))
ただし、標準的な方法ではないようです。
いくつかの有名なプロジェクトのように: 竜巻など、常にこの構造を使用しています。しかし、挿入行がありません。
インポート文が unittest ファイルにある場合、sniffer や autonose などの自動テスト ツールは、このような構造を実行できます。
どうしてか分かりません。
PEP328 または PEP366 では、これに関する優れた解決策は得られません。
PEP8 は、このようなことを行うことを推奨しています。
この問題は、次のような別のモジュール (別のファイル内) をインポートするときにも発生します。
├── a
│ ├── e.py
│ └── __init__.py
├── b
│ ├── c.py
│ ├── d.py
│ └── __init__.py
├── __init__.py