title: Force python to use an older version of module (than what I have installed now)
body: <p>My employer has a dedicated module<sup>1</sup> we use for internal unit / system test; however, the author of this module no longer works here and I have been asked to test some devices with it.</p>
  <p>The problem is that <code>pyfoo</code> requires an ancient version of <code>twisted</code> (v8.2.0) and it imports <code>twisted</code> in 33 different files.  I tried running <code>pyfoo</code>'s unit tests under v11.0.0 and I don't even see TCP SYN packets<sup>2</sup>.  Unfortunately, I have already got <a href="http://twistedmatrix.com/trac/" rel="nofollow noreferrer">twisted v11.0.0</a> installed on my lab linux server and I have my own code that depends on it.</p>
  <p>To solve this problem, I have only come up with the following options:</p>
  <p><em>Option A</em>.  Install a new version of python, install <code>virtualenv</code>, and then install an old version of <code>twisted</code> under the <code>virtualenv</code>.  Only run the tests requiring <code>pyfoo</code> under this new version of python.</p>
  <p><em>Option B</em>.  Edit all 33 of the files with the following: <code>DIR = '../'; sys.path.insert(0, DIR)</code> and install the old version of python in the appropriate directory below the source.</p>
  <p><em>Option C</em>.  Attempt to fix <code>pyfoo</code> to use v11.0.0<sup>3</sup></p>
  <p>Are there any options I am missing?  Is there a more elegant way to solve this problem, besides Option A, above?</p>
  <hr>
  **END-NOTES:**
  <ol>
  <li>Let's call it <code>pyfoo</code> for sake of argument</li>
  <li>The unit tests connect to one of our local lab servers and exercises basic telnet functionality</li>
  <li>This option is almost a non-starter... <code>pyfoo</code> is not trivial, and I have a short deadline for this work.</li>
  </ol>