I am trying to link to my own C library from Cython, following the directions I've found on the web, including this answer: Using Cython To Link Python To A Shared Library I am running IPython through Spyder. My setup.py looks like this: from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize import numpy as np setup( ext_modules = cythonize( [Extension("*",["*.pyx"], libraries =["MyLib"], extra_compile_args = ["-fopenmp","-O3"], extra_link_args=["-L/path/to/lib"]) ]), include_dirs = [np.get_include()], ) The file libMyLib.so is in /path/to/lib and it compiles fine. I have a Python script in my IPython profile startup folder that does this try: os.environ["LD_LIBRARY_PATH"] += ":/path/to/lib" except KeyError: os.environ["LD_LIBRARY_PATH"] = "/path/to/lib" I can confirm that this is running, because if I type os.environ["LD_LIBRARY_PATH"] into the IPython interpreter, it returns /path/to/lib But when I try to load the Cython module (i.e. import mycythonmodule) I get: ImportError: libMyLib.so: cannot open shared object file: No such file or directory I've also tried putting libMyLib.so in other places to see if cython would find it: In the directory where Python is running On the Python path In the same folder as the cython module But it still doesn't find the shared library. The only way I can get it to find the library is by dropping it in /usr/lib, but I don't want it there, I want to be able to set the library path. Am I missing something? Continue reading...