Can't find anything about this issue online. I have run into some unexpected state issues after using sys.path.append().
I have a Python 3.9 project structured like so:
│ some_class.py
│  
└─submodule
    │ 
    └─some_folder
       │
       └─ shared.py
       │
       └─ some_other_class.py
The submodule folder contains another project (git repo) inside my own project. I want it to remain immutable, so I can easily pull/integrate future changes (and do the same with other submodules in the project). This means not changing anything (including imports) in any files in submodule.
shared.py contains a variable shared_variable = None and some_other_class.py looks like this:
import folder.shared as shared
def some_function():
    print('some_other_class output:')
    print(shared.shared_variable)
some_class.py needs to access submodule. Owing to the requirements stated above (immutability of files in submodule), I use sys.path.append("submodule") to make my program run without changing imports in submodule. some_class.py looks like this:
import sys
sys.path.append("submodule")
from submodule.folder import shared
from submodule.folder.some_other_class import some_function
if __name__ == '__main__':
    shared.shared_variable = 'test'
    print('some_class output:')
    print(shared.shared_variable)
    some_function()
When I run some_class.py the output is this:
some_class output:
test
some_other_class output:
None
How come the output in some_other_class is None? Why isn't there shared state? Is there a workaround for this issue?
Thanks
