Troubleshooting Modulenotfounderror: How to Fix No Module Named CX_Oracle Issues

If you're working with Python and Oracle databases, you're likely to use the cx_Oracle module. However, you might encounter a frustrating issue: Modulenotfounderror: No module named cx_Oracle. This guide will help you understand the problem and walk you through the steps to fix it.

Table of Contents

Understanding the Issue

The Modulenotfounderror: No module named cx_Oracle error occurs when Python cannot find the cx_Oracle module in your system. This is usually because the module is not installed or not in the Python's path.


  • Python installed on your system
  • Access to Oracle Database
  • Oracle Instant Client installed on your system
  • (Optional) Virtual environment set up

Step-by-Step Guide to Fix 'No Module Named cx_Oracle'

Step 1: Verify Python and Oracle Instant Client Installation

Before you begin troubleshooting, ensure that Python and Oracle Instant Client are installed on your system. You can verify their installation using the following commands:

python --version
sqlplus -v

If either command returns an error, you need to install Python or Oracle Instant Client accordingly.

Step 2: Install cx_Oracle

If Python and Oracle Instant Client are installed, the next step is to install the cx_Oracle module. You can install it using pip, the Python package manager:

pip install cx_Oracle

Step 3: Verify cx_Oracle Installation

After installing the cx_Oracle module, verify its installation by running the following command:

pip show cx_Oracle

If the command returns information about the installed cx_Oracle package, it means the module is installed correctly.

Step 4: Set Up Environment Variables

Ensure that the Oracle Instant Client and cx_Oracle are in your system's PATH and PYTHONPATH environment variables. Add the following lines to your .bashrc, .bash_profile, or .zshrc file, replacing <path_to_instantclient> with the actual path to your Oracle Instant Client installation:

export PATH=<path_to_instantclient>:$PATH
export LD_LIBRARY_PATH=<path_to_instantclient>:$LD_LIBRARY_PATH
export PYTHONPATH=<path_to_instantclient>:$PYTHONPATH

Save the file and run the following command to reload the environment variables:

source ~/.bashrc

(or source ~/.bash_profile or source ~/.zshrc depending on your system)

Step 5: Test Your Configuration

Create a Python script to test your cx_Oracle configuration. Replace <username>, <password>, and <connection_string> with your Oracle database credentials:

import cx_Oracle

connection = cx_Oracle.connect('<username>', '<password>', '<connection_string>')
print("Database version:", connection.version)

If the script runs without any errors, congratulations! You've successfully resolved the No module named cx_Oracle issue.


What is cx_Oracle?

cx_Oracle is a Python module that enables you to access Oracle Database and conform to the Python database API specification. Read more.

How do I install Oracle Instant Client on my system?

You can find detailed installation instructions for various platforms in the Oracle Instant Client documentation.

How do I set up a virtual environment for my Python project?

You can use venv or virtualenv to create a virtual environment for your project. Read more.

How do I uninstall cx_Oracle?

To uninstall cx_Oracle, run the following command:

pip uninstall cx_Oracle

Why should I use virtual environments?

Virtual environments isolate your Python project's dependencies, ensuring that different projects don't interfere with each other. This is especially helpful when working with multiple projects that require different versions of the same package. Read more.

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.