import a function from another .ipynb file

PythonImportIpythonJupyter Notebook

Python Problem Overview


I defined a hello world function in a file called 'functions.ipynb'. Now, I would like to import functions in another file by using "import functions". I am sure that they are in the same folder. However, it still shows that "ImportError: No module named functions". By the way, I am using jupyter notebook. Thanks a lot!

Python Solutions


Solution 1 - Python

You'll want to use the ipynb package/module importer. You'll need to install it: pip install ipynb.

Create a Notebook named my_functions.ipynb. Add a simple function to it.

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

Then, create a second IPython Notebook and import this function with:

from ipynb.fs.full.my_functions import factorial

Then you can use it as if it was in the same IPython Notebook:

testing = factorial(5)

See the documentation for more details.

Solution 2 - Python

For my use case the ipnyb import didn't work for some reason. I had to use Jupyter Notebook magic cell to import my function.:

%run MyOtherNotebook.ipynb     #this is were my function was stored
function(df)                    #then simply run the function

Solution 3 - Python

You can save functions.ipynb as functions.py and can import the file as import functions. Now you can use any function defined in the functions file as functions.function_name For eg, if add is a function,

functions.add(5,3)

after importing will work.

Solution 4 - Python

@David Rinck's answer solved the problem, but I'd like to recommend you add the boilerplate __name__ == "__main__" to guard the scripts you don't want to accidentally invoke. It works the same way as in a usual Python file.

If a .ipynb file a.ipynb is imported by another one b.ipynb

from ipynb.fs.full.a import factorial

the __name__ in a.ipynb would be ipynb.fs.full.a rather than "__main__".

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChao SongView Question on Stackoverflow
Solution 1 - PythonDavid RinckView Answer on Stackoverflow
Solution 2 - PythonGedas MiksenasView Answer on Stackoverflow
Solution 3 - PythonTinto RajView Answer on Stackoverflow
Solution 4 - PythonLerner ZhangView Answer on Stackoverflow