papermill
papermill copied to clipboard
ImportError: attempted relative import with no known parent package
I'm trying to turn into a pip package a notebook which runs using Papermill. There are python file local to the package that I want to import into the notebook but it's giving me an error:
# SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
# sys.path.append(os.path.dirname(SCRIPT_DIR))
from . import utils, preprocessing as prep
ImportError: attempted relative import with no known parent package
This way of importing gives this error whether I try to run the notebook manually and through Papermill.
I've also tried importing it directly:
import utils, preprocessing as prep
ModuleNotFoundError: No module named 'utils'
The direct import runs fine if I execute the notebook manually, but when I try to run them through Papermill it doesn't work.
In my package parent I have
import os, sys; sys.path.append(os.path.dirname(os.path.realpath(__file__)))
from . import preprocessing
from . import utils
Hi, I'm not part of the team working on this project, but I've come across this issue a couple times before. You should be able to resolve this issue by switching your import statement to:
from your_package_name import utils, preprocessing
Unfortunately, appending to the system path is a bit of a hack and is recommended against - see the python module docs for an in depth explanation of how the system works. You'll want to replace all instances imports with path appends with fully qualified imports too.