On Mon, 2007-03-19 at 11:42 -0700, abcd wrote:
> nevermind this took care of it:
> 
> import sys
> 
> def tryAllThree():
>     a = "c:\\alpha"
>     b = "c:\\beta"
>     g = "c:\\gamma"
> 
>     sys.path.append(a)
>     import Person
>     alpha = Person.Person()
> 
>     sys.path.remove(a)
>     sys.path.append(b)
>     reload(Person)
>     beta = Person.Person()
> 
>     sys.path.remove(b)
>     sys.path.append(g)
>     reload(Person)
>     gamma = Person.Person()

That sort of works, but it's really unclean.

I suggest you turn each directory that contains an implementation of
Person into a package. That can be done by simply putting an __init__.py
file into each of those directories. This __init__.py file can be empty
or only contain a "pass" statement, but as long as it's there, the
directory containing it becomes a package.

Then, add the directory that contains your packages (C:\ in your
example) to your path, and you can import and use your Person modules
like this:

    import alpha.Person, beta.Person, gamma.Person
    alpha_person = alpha.Person.Person()
    beta_person = beta.Person.Person()
    gamma_person = gamma.Person.Person()

The main advantages are that the different implementations of Person
don't shadow each other in your name space, and you don't gratuitously
force module reloads.

Hope this helps,

Carsten.


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to