1

同じフォルダー内の別のファイルにファイルをインポートする場合。

ファイル構造:

.
├── 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
4

3 に答える 3

1

python b/d.pyの代わりに使用する必要がありpython d.pyます。

于 2012-07-10T09:27:06.087 に答える
-1

PEP328 によると、次のコードが機能するはずです。

from . import c

私の理解は正しいですか?

于 2012-07-10T09:27:39.580 に答える