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