Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I install a Python extension module using distutils?
    primarykey
    data
    text
    <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>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload