title: How do I install a Python extension module using distutils?
body: <p>I'm working on a Python package named "lehmer" that includes a bunch of extension modules written in C. Currently, I have a single extension module, "rng". I am using Python's Distutils to build and install the module. I can compile and install the module, but when I try to import the module using <code>import lehmer.rng</code> or <code>from lehmer import rng</code>, the Python interpreter throws an <code>ImportError</code> exception. I can import "lehmer" fine.</p>
  
  <p>Here are the contents of my <code>setup.py</code> file:</p>
  
  <pre><code>from distutils.core import setup, Extension
  
  exts = [Extension("rng", ["lehmer/rng.c"])]
  
  setup(name="lehmer",
        version="0.1",
        description="A Lehmer random number generator",
        author="Steve Park, Dave Geyer, and Michael Dippery",
        maintainer="Michael Dippery",
        maintainer_email="mpd@cs.wm.edu",
        packages=["lehmer"],
        ext_package="lehmer",
        ext_modules=exts)
  </code></pre>
  
  <p>When I list the contents of Python's <code>site-packages</code> directory, I see the following:</p>
  
  <pre><code>th107c-4 lehmer $ ls /scratch/usr/lib64/python2.5/site-packages/lehmer
  __init__.py  __init__.pyc  rng.so*
  </code></pre>
  
  <p>My <code>PYTHONPATH</code> environment variable is set correctly, so that's not the problem (and as noted before, I can <code>import lehmer</code> just fine, so I <em>know</em> that <code>PYTHONPATH</code> is not the issue). Python uses the following search paths (as reported by <code>sys.path</code>):</p>
  
  <pre><code>['', '/scratch/usr/lib64/python2.5/site-packages', '/usr/lib/python25.zip', '/usr/lib64/python2.5', '/usr/lib64/python2.5/plat-linux2', '/usr/lib64/python2.5/lib-tk', '/usr/lib64/python2.5/lib-dynload', '/usr/lib64/python2.5/site-packages', '/usr/lib64/python2.5/site-packages/Numeric', '/usr/lib64/python2.5/site-packages/PIL', '/usr/lib64/python2.5/site-packages/SaX', '/usr/lib64/python2.5/site-packages/gtk-2.0', '/usr/lib64/python2.5/site-packages/wx-2.8-gtk2-unicode', '/usr/local/lib64/python2.5/site-packages']
  </code></pre>
  
  <h2>Update</h2>
  
  <p>It works when used on an OpenSUSE 10 box, but the C extensions still fail to load when tested on Mac OS X. Here are the results from the Python interpreter:</p>
  
  <pre><code>&gt;&gt;&gt; sys.path
  ['', '/usr/local/lib/python2.5/site-packages', '/opt/local/lib/python25.zip', '/opt/local/lib/python2.5', '/opt/local/lib/python2.5/plat-darwin', '/opt/local/lib/python2.5/plat-mac', '/opt/local/lib/python2.5/plat-mac/lib-scriptpackages', '/opt/local/lib/python2.5/lib-tk', '/opt/local/lib/python2.5/lib-dynload', '/opt/local/lib/python2.5/site-packages']
  &gt;&gt;&gt; from lehmer import rng
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  ImportError: cannot import name rng
  &gt;&gt;&gt; import lehmer.rngs
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  ImportError: No module named rngs
  &gt;&gt;&gt; import lehmer.rng 
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  ImportError: No module named rng
  &gt;&gt;&gt; from lehmer import rngs
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  ImportError: cannot import name rngs
  </code></pre>