How can I remove a linked library that pertains to a created proxy without deleting or altering the proxy or proxy's data?
Using the "make local" function,L in object mode, simply unselects the selected proxy without making any changes.
As a workaround, one could save the proxy's associated data(Animation,Materials,etc) through fake users, then delete the associated linked library in the outliner, append the original object or armature the proxy came from, if the file is still available, and then reassociate the data.
I had this issue today and it took me a while to figure out a workaround, but here it is: It's essentially just duplicating the object and moving the proxy to an unused layer and disabling it from rendering. Just select the proxy and run it. AFAIK it also carries the child relationships as well.
import bpy
###SCRIPT TO FIX PROXIES###
old = bpy.context.active_object.name #call the name of the proxy object
bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}) #duplicate
newname = bpy.context.active_object.name #call the name of the new object
newobj = bpy.context.object #call the data/ID of the new object
bpy.ops.object.select_all(action='DESELECT') #deselect all
bpy.data.objects[old].select = True #select proxy
obj = bpy.context.object #call data/ID of proxy
bpy.context.scene.objects.active = obj #make proxy active
bpy.ops.object.move_to_layer(layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True))
bpy.context.object.hide_render = True #after moving, hide the proxy from rendering
bpy.context.area.type = 'VIEW_3D' #change context to 3D
bpy.ops.view3d.layers(nr=0, extend=False) #select all layers
bpy.ops.object.select_all(action='DESELECT') #deselect all
bpy.ops.view3d.layers(nr=0, extend=False) #deselect all layers
bpy.context.area.type = 'TEXT_EDITOR' #change context back to text editor
bpy.data.objects[newname].select = True #make new object selected
bpy.context.scene.objects.active = newobj #make new object active
SHIFT
+D
Duplicate combined with "Make local" seems to produce fully local copies. $\endgroup$