import a function from another .ipynb file
Asked Answered
T

5

76

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!

Torus answered 22/5, 2017 at 14:58 Comment(1)
Possible duplicate of ipynb import another ipynb fileHistogenesis
W
103

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.

Wattle answered 16/4, 2018 at 15:16 Comment(8)
This does not work for me I always get this error KeyError: 'package'. The environment I use for notebooks is Azure Databricks and python 3. Is there a solution to fix this?Nestornestorian
Make sure you install the package ipynb otherwise it will not work!Intrastate
What if my_functions contains some code that I don't want to execute, but only want a function from the file?Glottis
ModuleNotFoundError: No module named 'ipynb.fs.full.my_functions' I am getting this error,Can someone advice the cause for that,,I installed ipynb as well,,,Pappose
@Pappose Make sure that all the notebooks are in the same directory.Aflcio
@Glottis then use import ipynb.fs.defs.my_functions as documented here github.com/ipython/ipynbYolandayolande
@racoon_lord I am using the same syntax to import only function definitions. While this is working in .ipynb files. For some reasons I have to convert my second python notebook file to .py format. But this time, it is executing code of first Notebook as whole (including the code that I do not want to execute) instead of only function I want to call. Any solution to this?Torsibility
Actually I am performing Machine learning in first file and from second file I am executing function to check predictions. (Do no want to run training part again).Torsibility
S
13

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
Saltatory answered 28/9, 2021 at 7:53 Comment(0)
A
7

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.

Anaglyph answered 1/8, 2020 at 18:43 Comment(0)
C
4

@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__".

Caudill answered 15/10, 2021 at 6:15 Comment(0)
A
1

You can use the solution provided by @David Rinck but beware that the ipynb file that you are importing the function from will run as a whole. So it is advisable that the file does not have any code the runs and only has functions that you may need. I tried it myself and the same thing happened to me. An easy solution that I resort to is just make a .py file containing the functions that I need and just import the functions from that file.

Accommodative answered 28/2, 2023 at 7:45 Comment(1)
This does not provide an answer to the question. Once you have sufficient reputation you will be able to comment on any post; instead, provide answers that don't require clarification from the asker. - From ReviewJenks

© 2022 - 2024 — McMap. All rights reserved.