How to debug this import problem?
Diez B. Roggisch
deets at nospam.web.de
Fri May 8 19:39:31 CEST 2009
Iwan Vosloo wrote:
> Hi there,
> We have a rather complicated program which does a bit of os.chdir and
> sys.path manipulations. In between all of this, it imports the decimal
> module several times.
> However, it imports a new instance of decimal sometimes. (Which is a
> problem, since a decimal.Decimal (imported at point A) now is not the
> same as that imported somewhere else.
> In trying to figure out what's happening, we've changed the code in
> decimal to print out id(sys) when decimal gets imported. This also
> gives back different values at different times. My suspicion is that
> when importing python tries to check sys.modules - but each time sys is
> a different sys already.
> Any ideas of how we can gather more data to find out exactly what causes
> this? The path manipulations is a suspect, but unfortunately we cannot
> remove it. If we can trace the problem from the import end though, we
> may be able to isolate the exact one which is the problem.
> This code incidentally also runs in a virtualenv environment AND uses
> setuptools. None of these complications can be removed...
Try putting an "import pdb; pdb.set_trace()" on top of the decimal module.
Then you can see whenever it gets imported new, and with "bt" get a
backtrace, and you can inspect (and thus eventually compare) the various
states of sys.path and sys.modules.
More information about the Python-list