2011-01-23 12 views

答えて

5

:test.pyから

import pkg1.util 

これがPython 3だと、.pyファイルに以下を追加する必要はありません。

あなたは、Python 3を使用していること、またはあなたがPythonの2を使用していることとが含まれている与えられた
from __future__ import absolute_import 

:Pythonの2の上に立ち往生していますいくつかの貧しい人々芝はあなたのコードを使用する必要がある場合、それは後方移植を助けるので、私はまだかかわらず、希望ここで上記の行は、あなたの答えです:main.pyから

import pkg1.util as util 

test.pyからあなたがするpkg1pkg2と見なさかどうかに応じて2つの方法のいずれかを使用します常に互いに関連して同じ方法で一緒に配備されるもの、または代わりに、それぞれが常にトップレベルで半独立して配備されるかどうかを決定します。最初の場合は、これを行うだろう:

from ..pkg1 import util 

をし、それが第二の選択肢だ場合は、この:

import pkg1.util as util 

これは、あなたが常にでmain.pyディレクトリからのPythonを実行していることを、当然のことながら、意味しますまたはそのディレクトリがPYTHONPATHにあるか、何らかの理由でsys.pathになります(たとえば、メインのPythonサイトパッケージディレクトリなど)。

+0

何らかの理由で 'PYPATH'に別の' pkg1'が存在する場合、これらのオプションの両方でインポートされた* this * 'pkg1'を取得できますか? –

+0

@aharon:適切なディレクトリがパスの先頭にあることを確認するために、 'sys.path'を自分自身で邪魔することなく意図した' pkg1'を得ることを約束するオプションはありません。あなたが '名前空間パッケージ 'としてパッケージを管理している' setuptools'のようなパッケージ管理システムを持っていない限り、この方法で競合するパッケージ名を持つことは非常に悪い考えです。 – Omnifarious

+3

これは 'main.py'と同じディレクトリに' __init__py'を必要としないのでしょうか?つまり、 'test.py'と' util.py'は共通のスーパーパッケージのサブパッケージではない完全に別のパッケージに入っています。 –

1

:あなたが言及しているので

from ..pkg1 import util 
関連する問題