Using Sphinx with a distutils-built C extension
Since distutils has a way of figuring out the variable build path, why not just use it?
import distutils.command.build
from distutils.dist import Distribution
b = distutils.command.build.build(Distribution())
b.initialize_options()
b.finalize_options()
print b.build_temp
# If you're building a library, you might need:
print b.build_lib
# Other values of interest are:
b.build_purelib
b.build_platlib
b.build_scripts
b.build_base
Even thought the distutils docs are sparse, here you'll find one-liners about what kinds of build are there.
There are simpler ways to get the build dir name:
>>> from distutils.util import get_platform
>>> get_platform()
'linux-x86_64'
I’ll let you finish the string concatenation :)
Another way to solve your problem is to create a setup.cfg file alongside your setup.py with this content:
[build_ext]
inplace = 1
This will build your extension modules in its parent package directory. Sphinx should see it.