6
votes

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
3

3 Answers

8
votes

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!

3
votes

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
1
votes

If you aren't already, try using the full pathname of the function in your code.

from Folder1.Folder2.FileName import ModuleName

someVar = ModuleName(params)

Folder1 would be a folder in the same directory as your main program. Also, create an empty file called __init__.py in every folder you import from.