Question: each unit test I'm running is writing python code out to a file, then importing it as a module. The problem is that the code changes but further import statements don't modify the module.

I think what I need is a way to ether force a reload on a module or clear the internal bytecode cache. Any ideas?

Thanks!

Answer: 
Reimporting modules is tricky to get all the edge cases right. The documentation for [reload](http://docs.python.org/library/functions.html#reload) mentions some of them. Depending on what you are testing, you *may* be better off by testing the imports with separate invocations of the interpreter by running each via, say, [subprocess](http://docs.python.org/library/subprocess.html). It will likely be slower but also likely safer and more accurate testing.
Write your code to differently-named modules. Writing new code into an existing file, and trying to import it again will not work well.

Alternatively, you can clobber `sys.modules`. For example:

```
class MyTestCase(unittest.TestCase):
    def setUp(self):
        # Record sys.modules here so we can restore it in tearDown.
        self.old_modules = dict(sys.modules)

    def tearDown(self):
        # Remove any new modules imported during the test run. This lets us
        # import the same source files for more than one test.
        for m in [m for m in sys.modules if m not in self.old_modules]:
            del sys.modules[m]

```