PYTHONPATH issue with sibling package names

Diez B. Roggisch deets at
Thu Sep 10 16:12:20 CEST 2009

Stuart Moffatt wrote:

> Environment: Eclipse 3.4.2, Windows XP Pro SP2, Pydev 1.4.4, python
> 2.6
> When I work in eclipse with java, I like to break up my client and
> server packages, like this:
> client-project/src/org/me/client
> server-project/src/org/me/api
> server-project/src/org/me/dao
> server-project/src/org/me/entity
> server-project/src/org/me/<etc>
> Then, when I need to call API code from the client, I make sure the
> API src is on the path.
> I am trying setup pydev projects to do the same thing, but running
> into an ImportError because my client code can't see the server src,
> even though it is on the path.
> Specifically, I am trying to import an entity from the server code
> into the client, like this:
>    from import MyEntity
> If I do this from any module in the server project it is fine (because
> the src path is in the same eclipse project). But if I do it from
> anywhere in the client code I get the ImportError
> From what I can tell, python asks for the "closest" module path, which
> is the current project. It finds, but there is only the client
> sub-package. The sibling is in another eclipse project,
> but even though that path is on the PYTHONPATH, python stopped looking
> after it found a similarly named parent package.
> Is there a trusted way to make sure python looks through all paths for
> sibling packages? Can I load '' from one path in
> PYTHONPATH and '*' from another path in PYTHONPATH? I imagine
> if I try to force python to load the second package first that the
> same thing will happen in reverse.

The solution you are searching for is called "namespace packages", and you
can read more about it here:

Do yourself a favor though, and don't use those several-steps-namespaces.
This is Python, not Java - two levels at *most*, normally a
project-namespace should be enough.


More information about the Python-list mailing list