[Distutils] Possible bug in setuptools - test command?

Iwan Vosloo iwan at reahl.org
Mon May 11 13:53:34 CEST 2009

Hi there,

We've been having some trouble with a script which invokes
setuptools.setup(script_args=['test']) more than once in a single

During each invocation, python imports different, new instances of the
same module.

We've narrowed it down to setuptools/command/test.py, in the method

It saves sys.modules like this:

        old_modules = sys.modules.copy()

Then does its thing and restores sys.modules like this:


But, as the code below illustrates, this results in multiple imports of
the same modules:

import sys

def i():
    old_modules = sys.modules.copy()

    from decimal import Decimal

    return Decimal

assert i() is i(), 'Two different Decimal instances returned'  # Fails

Is this a bug?  (We are on version 0.6c8 of setuptools, python 2.5)

There is an easy solution:

Save sys.modules like before:
        old_modules = sys.modules.copy()

But restore it like this:
    sys.modules = old_modules

That seems to fix our problem (not sure of other effects though).

- Iwan Vosloo

More information about the Distutils-SIG mailing list