Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jupyter notebook - can't import python functions from other folders

I have a Jupyter notebook, I want to use local python functions from other folders in my computer. When I do import to these functions I get this error: "ModuleNotFoundError: No module named 'xxxxxxxxxxxxx'

  • I'm using anaconda as the python interpreter
like image 832
erez Avatar asked May 03 '18 12:05

erez


2 Answers

You can add a path using sys to your local module/python file.

import sys
sys.path.append("/path/to/file/")  # path contains python_file.py

import python_file

If you want a more permanent solution by adding module to Anaconda path, see previous answer from cord-kaldemeyer https://stackoverflow.com/a/37008663/7019148. Content copied below for completeness:

I found two answers to my question in the Anaconda forum:

1.) Put the modules into into site-packages, i.e. the directory $HOME/path/to/anaconda/lib/pythonX.X/site-packages which is always on sys.path. This should also work by creating a symbolic link.

2.) Add a .pth file to the directory $HOME/path/to/anaconda/lib/pythonX.X/site-packages. This can be named anything (it just must end with .pth). A .pth file is just a newline-separated listing of the full path-names of directories that will be added to your path on Python startup.

Both work straightforward and I went for the second option as it is more flexible.

*** UPDATE:

3.) Create a setup.py in the folder of your package and install it using pip install -e /path/to/package which is the cleanest option from my point of view because you can also see all installations using pip list.

Thanks anyway!

like image 133
tda Avatar answered Oct 18 '22 22:10

tda


look, on python 2.7 it will be work, but on python 3 you get some errors...

if you write some functions in other file, you need import this file. if this file in the same folder - it is good. but if in sub folder... in sub folder you need create empty file init.py
and now, if you will try import your module from sub file - also will be work

impotent (for python 3):
use this code

import os
import sys

sys.path.append(os.getcwd() + '/modules')
import my_module
like image 3
Konstantin Kozlenko Avatar answered Oct 19 '22 00:10

Konstantin Kozlenko