This page was generated from
importing-local-python-modules-from-jupyter-notebooks/sys-path-in-helper-module/path-helper.ipynb.
Interactive online version:
.
Manipulating sys.path
in a Helper Module in the Current Directory§
Instead of manipulating the path in each notebook (like shown in this notebook), we can create a helper module in the current directory which does the path manipulations. For the current notebook, there is a helper module in the same directory: mymodule.py. This helper module does some obscure manipulations that make it look like it’s the module from ../module-subdirectory/mymodule.py.
[1]:
import mymodule
[2]:
mymodule.hello()
Hello, world!
Admittedly, the code looks quite scary:
[3]:
%cat mymodule.py
# Import a module with the same name from a different directory.
import importlib
import os
import sys
sys.path.insert(0, os.path.abspath('../module-subdirectory'))
if not hasattr(importlib, 'reload'):
importlib.reload = reload # for Python 2 compatibility
# Temporarily hijack __file__ to avoid adding names at module scope;
# __file__ will be overwritten again during the reload() call.
__file__ = {'sys': sys, 'importlib': importlib}
del importlib
del os
del sys
__file__['importlib'].reload(__file__['sys'].modules[__name__])