Yes, there is one keyword - "wrong". OO is model, where what you want to do should NOT be done.
If you have REALLY good reason for that, you can do it much simpler:
import externalLib as myLib
def myNewMethod(self):
print(self.name)
myLib.Superclass.myNewMethod = myNewMethod
Why didn't your code work?
When you defined Superclass inheriting from myLib.Superclass, it stayed ONLY in this module. When you defined your Superclass, name "Superclass" was bind with your new class only in global scope, but old value didn't change, co Superclass in myLib/externalLib scope stayed the same. I can see how you got impression that it may work, if you worked with classic-OO languages like Java or C++.
Little known fact - Java/C++ OO model is not really object-oriented. It does such impression, but OOP model is REALLY implemented in Smalltalk.