Pillow does this https://pillow.readthedocs.io/en/3.1.x/reference/Image.html. It seems pretty straight forward:
gray = img.convert("LA")
lab = img.convert("LAB")
Also OpenCV seems to be able to convert RGB images to both Lab and gray scale so I suppose you can take your pick .
import cv2
image = cv2.imread('image.png')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab)