Doubling of the scipy.signal's bandpass filter order during the design
There is a bit of terminology confusion here.
Strictly speaking the order of the filter is the number of poles, so in your case you designed a 4th order filter.
Many software packages use the convention for bandpass/stop filters to specify the order of each slope to make it consistent with lowpass/highpass design calls. That results in a filter of twice the order.
Interestingly enough, even Matlab is inconsistent about that. designfilt('bandpassiir','FilterOrder',2, ...) will give a second order filter. butter(2,[w1 w2],...) will give you a 4th order filter.