An approximate solution would be to map the polygons to the plane, and use a plane geometry library to do the computational geometry. This approximation should work really well for polygons which are small relative to the entire sphere; but even for large polygons, you can be arbitrarily accurate by sufficiently refining your polygon.
I don't think there is much library functionality for intrinsically spherical operations, unfortunately.
Edit: here is a shapely solution which I think does what you want:
from shapely.geometry.polygon import LinearRing, Polygon
coords_1 = [(0,0), (1,1), (1,0), (0,1)]
##coords_1 = [(0,0), (0,1), (1,1), (1,0)]
lr = LinearRing(coords_1)
if lr.is_valid:
print Polygon(lr).area
else:
print Polygon(coords_1).buffer(0).area + Polygon(coords_1[::-1]).buffer(0).area