ImportError

Python SystemImport ErrorCommonLast updated: June 29, 2026Tested on:CPython v3.12PIP v24.0June 2026

This error occurs when Python successfully finds a module package but fails to import a specific class, function, or sub-module from it.

ImportError Quick Fix⏱️ Est. Fix Time: 3 minutes

Usually happens because:

  • Circular dependency cycle loops between importing modules
  • Import name is missing or misspelled in target module code
  • Compiled native binary dynamic libraries failed to load

🔍 Quick Checklist:

What is ImportError?

The 'ImportError' is raised when an import statement fails to load a module or a specific attribute from a module. While 'ModuleNotFoundError' (its subclass) specifically indicates that the module file itself cannot be located, a general 'ImportError' typically indicates circular dependency loops (Module A imports Module B, which imports Module A), binary extension loading failures (e.g. incompatible compiled C library wrappers), or attempts to import attributes that do not exist in the target module.

Common Causes

  • Circular import loop: Two or more modules import each other recursively, causing Python's import resolver to access a partially initialized module.
  • Attribute missing from module: Attempting to run 'from module import name' but the target name is not defined in the module.
  • Binary dependency loading failure: The module is located, but its compiled C extensions (like database drivers) fail to load due to missing shared system libraries.
CauseFrequency
Circular dependency import cycles⭐⭐⭐⭐⭐
Attribute or name spelling mismatch inside module⭐⭐⭐⭐
Failed native binary library bindings (.so/.dll)⭐⭐⭐

Common Mistakes

  • Writing custom utility script names that collide with built-in library names (e.g. naming your local file `math.py` and trying to run `from math import sqrt`).
  • Assuming renaming variables solves circular imports (the architecture layout itself must be decycled).

How to Fix

1Refactor circular dependencies: Restructure import layouts (e.g. move imports inside functions or merge modules).
2Verify import attribute spelling: Confirm that the class or function exists in the module and check for spelling errors.
3Reinstall native dependencies: Recompile or reinstall binary packages using pip to ensure shared system library compatibility.

Python Operations & Verification

Resolve circular imports by delaying the import query until the function is actually called at runtime.

Deferred Function Imports Example
# b.py (circular helper example)
def run_task_b():
    # Move import inside function body (deferred import)
    from a import func_a
    print("Running B task...")
    func_a()

Platform Specific Fixes

Scan missing shared binary dependencies on compiled python extensions (.so files).

Linux Config
ldd ~/.venv/lib/python3.10/site-packages/cryptography/hazmat/bindings/_rust.abi3.so

Best Practices

  • Design clean hierarchical package layers where modules import downwards, never sideways or upwards recursively.
  • Adopt absolute package reference names instead of relative package dots inside complex directory structures.

Frequently Asked Questions (FAQ)

Q: How does ImportError differ from ModuleNotFoundError?

ModuleNotFoundError means Python cannot find the file or package directory at all. ImportError means Python found the module, but something went wrong while executing its code or importing a specific name from it.

Q: What is a circular import?

It occurs when Module A imports Module B, and Module B in turn imports Module A. Because neither module has finished executing, Python throws an 'ImportError: cannot import name X from Y'.

Q: How do I fix a circular import?

Move the import statement inside the function or method where it is used (deferred import), or move shared code into a third helper module.

Q: Why do I get 'ImportError: DLL load failed'?

On Windows, this means a compiled C/C++ extension module requires a DLL that is missing from your system. Installing the Microsoft Visual C++ Redistributable usually resolves this.

Still having this problem?

Didn't solve your problem?

SuggestRequest Error