Blender ignores changes to python scripts I have two scripts. One that runs the main logic and another that holds a set of functions that I want to call. However when I make a change to the functions script it is not updated. I have saved the function script as a file and I can see that the changes have been applied to it but these changes are not reflected when I click run on my main script.

I have tried click run script on my functions script and if I modify it so it contains an error it will tell me but the main script doesn't seem to notice or care. The only way to get Blender to take notice of any changes in my scripts is to close and reopen it! Why is this happening?

Edit

It appears I've not understood how script works in Blender when you're not running the game engine. So my question effectively becomes:

How can I run a script that calls functions in other scripts by clicking a button in Blender?

I understand this could be considered too broad or too different to my original question so I am considering closing this and starting again.
Once a Python module has been imported, it will never be reloaded by the interpreter (that is, not automatically) when source file changes.

Blender has an operator to reload all of its py scripts, triggered by the F8 shortcut (in default keymap).

Now, that will only reload registered addons (and startup/UI scripts), if your addon contains several sub-modules you need to handle their reload yourself, using that kind of construct in your __init__.py addon’s file:

# When bpy is already in local, we know this is not the initial import...
if "bpy" in locals():
    # ...so we need to reload our submodule(s) using importlib
    import importlib
    if "my_submodule" in locals():
        importlib.reload(my_submodule)


# This is only relevant on first run, on later reloads those modules
# are already in locals() and those statements do not do anything.
import bpy
import my_submodule