A while ago I wrote a libraw/dcraw wrapper called rawpy. It is quite easy to use:
import rawpy
import imageio
raw = rawpy.imread('image.nef')
rgb = raw.postprocess()
imageio.imsave('default.tiff', rgb)
It works natively with numpy arrays and supports a lot of options, including direct access to the unprocessed Bayer data.