I pickled a model and want to expose only the `prediction` api written in `Flask`. However when I write a dockerfile to make a image without `sklearn` in it, I get an error `ModuleNotFoundError: No module named 'sklearn.xxxx'` where `xxx` refers to sklearn's ML algorithm classes, at the point where I am loading the model using pickle like `classifier = pickle.load(f)`. 

When I rewrite the dockerfile to make an image that has `sklearn` too, then I don't get the error even though in the API I **never** import `sklearn`.  

My concept of pickling is very simple, that it will serialize the classifier class with all of its data. So when we unpickle it, since the classifier class already has a `predict` attribute, we can just call it. Why do I need to have `sklearn` in the environment?