How are you launching your scripts?
Have you tried the
reload function? You pass it a module object and it reloads the module. It works best with single modules, as dependency order can definitely become a thing.
A horribly hacky method, which I've used for reloading whole packages is:
package_name = 'pymel'
for mod in sys.modules.copy():
import pymel.core as pm
This also has issues, for example doing this with pymel leaks a crapload of memory.
Also any instances in memory could still be referencing these now deleted modules, so until they're cleaned up you could easily get errors.