How to force weights to be non-negative in Linear regression
What you are looking for, is the Non-negative least square regression.
It is a simple optimization problem in quadratic programming where your constraint is that all the coefficients(a.k.a weights) should be positive.

Having said that, there is no standard implementation of Non-negative least squares in Scikit-Learn. The pull request is still open.

But, looks like Scipy has implemented the same. 

PS: I haven't tried the scipy version. I found it solely by googling around.