'Bone' object has no attribute 'constraints'
Okay I found a solution. I read that to get reference to pose bones (where the constraint can be set) you need to do it from the object and not the armature, so I adjusted my script to look like this:

import bpy
ob = bpy.context.object
altob = bpy.data.objects["Armature.001"]

if (ob.type == 'ARMATURE') &amp; (altob.type == 'ARMATURE'):
    armature = ob.data
    altarmature = altob.data    
    for bone in ob.pose.bones:
        for altbone in altob.pose.bones:
            if bone.name == altbone.name:
                crc = bone.constraints.new('COPY_ROTATION')
                crc.target = altob
                crc.subtarget = altbone.name
                print(bone.name + " = " + altbone.name)


so instead of setting 'bone' and 'altbone' to the 'armature.bones', I set it to the object 'ob.pose.bones' and 'altob.pose.bones' and it worked like a dream. Just need a piece in here to clear all the constraints before setting new ones, but that's something for another day.