Why do I have to divide by $\pi$ in order to scale amplitude of sine frequency spectrum?
The FFT should be divided by the number of elements in the vector.  You specified the vector length to be duration = int(2*pi*fs) which is a really weird way to defining the length, btw.  Thus, you need to divide by int(2*pi*fs).  Yes, you need to divide by a 2 as well, because the signal energy is distributed evenly between positive and negative frequencies.