fromtimestamp(tz=None)
uses your local timezone and your local timezone is not utc and therefore it is incorrect to call .replace(tzinf=pytz.utc)
on the result.
Pass the timezone directly instead:
>>>> from datetime import datetime
>>> import pytz # $ pip install pytz
>>> datetime.fromtimestamp(1364691600, pytz.timezone("Europe/London"))
datetime.datetime(2013, 3, 31, 2, 0, tzinfo=<DstTzInfo 'Europe/London' BST+1:00:00 DST>)