TensorFlow ModuleNotFoundError: No Module Named ‘utils’

Problem Formulation

Say, you try to import label_map_util from the utils module when running TensorFlow’s object_detection API. You get the following error message:

>>> from utils import label_map_util
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    from utils import label_map_util
ModuleNotFoundError: No module named 'utils'

πŸ’¬ Question: How to fix the ModuleNotFoundError: No module named 'utils'?

Solution Idea 1: Fix the Import Statement

The most common source of the error is that you use the expression from utils import <something> but Python doesn’t find the utils module. You can fix this by replacing the import statement with the corrected from object_detection.utils import <something>.

For example, do not use these import statements:

from utils import label_map_util
from utils import visualization_utils as vis_util

Instead, use these import statements:

from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util

Everything remains the same except the bolded text.

This, of course, assumes that Python can resolve the object_detection API. You can follow the installation recommendations here, or if you already have TensorFlow installed, check out the Object Detection API installation tips here.

Solution Idea 2: Modify System Path

Another idea to solve this issue is to append the path of the TensorFlow Object Detection API folder to the system paths so your script can find it easily.

To do this, import the sys library and run sys.path.append(my_path) on the path to the object_detection folder that may reside in /home/.../tensorflow/models/research/object_detection, depending on your environment.

import sys
sys.path.append('path/to/object/detection/folder')

Solution Idea 3: Dirty Copy and Paste

I don’t recommend using this approach but I still want to share it with you for comprehensibility. Try copying the utils folder from models/research/object_detection in the same directory as the Python file requiring utils.

Solution Idea 4: Import Module from Another Folder (Utils)

This is a better variant of the previous approach: use our in-depth guide to figure out a way to import the utils module correctly, even though it may reside on another path. This should usually do the trick.

🌎 Recommended Tutorial: How to Import a Module from Another Path

Resources: You can find more about this issue here, here, and here. Among other sources, these were also the ones that inspired the solutions provided in this tutorial.

Thanks for reading this—feel free to learn more about the benefits of a TensorFlow developer (we need to keep you motivated so you persist through the painful debugging process you’re currently in). πŸ˜‰

🌎 Recommended Tutorial: TensorFlow Developer – Income and Opportunity