Possible bug in setuptools - test command?
Hi there, We've been having some trouble with a script which invokes setuptools.setup(script_args=['test']) more than once in a single process. 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 with_project_on_sys_path: It saves sys.modules like this: old_modules = sys.modules.copy() Then does its thing and restores sys.modules like this: sys.modules.clear() sys.modules.update(old_modules) 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 sys.modules.clear() sys.modules.update(old_modules) 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). Regards - Iwan Vosloo
On Mon, 2009-05-11 at 13:53 +0200, Iwan Vosloo wrote:
During each invocation, python imports different, new instances of the same module. ... Is this a bug? (We are on version 0.6c8 of setuptools, python 2.5)
Sorry, on second thought we realised this is obviously indended behaviour of the test command, forcing new instances of modules to be imported each time. Somehow a particular package manages to get a hold of classes from an earlier import though - that seems to be our problem, not setuptools itself. Regards - Iwan
participants (1)
-
Iwan Vosloo