Ipo module in Blender 2.74 using python
From 2.50 Ipo's have been replaced with Actions. While you can create an action with bpy.ops.action.new() you can also just add a keyframe to a property and the action will be created for you. Instead of Ipo curves we now use f-curves.

Starting with getting an object by name

obj = bpy.data.objects['Cube']


You can then use keyframe_insert to key all 3 axes of the objects location with

obj.keyframe_insert('location')


To key just one axis you can specify an index (X=0 Y=1 Z=2)

obj.keyframe_insert('location', index=0)


You could add multiple keyframes from a list

x = [1.0, 2.0, 3.0]
xframes = [0, 10, 20]
for i in range(len(x)):
    obj.location.x = x[i]
    obj.keyframe_insert('location', index=0, frame=xframes[i])


For the interpolation, each keyframe has it's own interpolation setting. A simple loop can set each keyframe to use the same interpolation.

objCurves = obj.animation_data.action.fcurves
for curve in objCurves:
    # here you can also test curve.array_index to find
    # the curve of a specific axis
    # array_index matches the index used in keyframe_insert
    if curve.data_path == 'location':
        for k in curve.keyframe_points:
            k.interpolation = 'LINEAR'


From blender v2.76 you can use objCurves.find() to get the specific curve that you want.

objCurves = obj.animation_data.action.fcurves
for i in [0,1,2]:
    curve = objCurves.find('location', index=i)
    for k in curve.keyframe_points:
        k.interpolation = 'LINEAR'