ImportError: No module named '_sqlite3' in python3.3
Categories:
Resolving 'ImportError: No module named '_sqlite3'' in Python 3.3

This article provides comprehensive solutions and troubleshooting steps for the common 'ImportError: No module named '_sqlite3'' encountered when working with Python 3.3, especially in Django projects.
The ImportError: No module named '_sqlite3'
is a frequently encountered issue for Python 3.3 users, particularly when setting up development environments for frameworks like Django. This error indicates that the Python interpreter cannot find the necessary _sqlite3
module, which is the low-level C implementation of the SQLite database driver. While Python's sqlite3
module is typically included by default, its C-level dependency might be missing or incorrectly configured, leading to this import failure.
Understanding the Root Cause
The sqlite3
module in Python relies on the SQLite C library. When Python is compiled, it looks for this library to build the _sqlite3
extension module. If the SQLite development headers and libraries are not present on the system during Python's compilation, or if they are not found in the expected locations, the _sqlite3
module will not be built. Consequently, any attempt to import sqlite3
will fail with the ImportError
.

Dependency chain for Python's sqlite3
module
Common Scenarios and Solutions
This error typically arises in two main scenarios: when Python is installed from source without the necessary build dependencies, or when using a pre-compiled Python distribution that might be missing components for your specific system. The solutions revolve around ensuring the SQLite development libraries are available and that Python is correctly linked against them.
sudo apt update
. For CentOS/RHEL, use sudo yum update
or sudo dnf update
.Solution 1: Installing SQLite Development Libraries
The most common fix is to install the SQLite development packages for your operating system. These packages provide the header files and static/shared libraries required to compile modules that link against SQLite.
Debian/Ubuntu
sudo apt-get install libsqlite3-dev
CentOS/RHEL/Fedora
sudo yum install sqlite-devel
macOS (Homebrew)
brew install sqlite
After installing the development libraries, if you installed Python from source, you will likely need to recompile Python. If you used a package manager or a pre-compiled installer, a simple reinstallation of Python might suffice, as it will then detect the newly available libraries.
Solution 2: Recompiling Python from Source
If you compiled Python from source, or if installing libsqlite3-dev
didn't immediately resolve the issue, you'll need to recompile Python after ensuring the SQLite development libraries are installed. This ensures that the Python build process can find and link against the necessary SQLite components.
1. Download Python Source
Download the Python 3.3 source code from the official Python website if you don't already have it.
2. Install Dependencies
Ensure all necessary build dependencies, including libsqlite3-dev
(or equivalent), are installed on your system.
3. Configure and Compile
Navigate to the Python source directory and run the configuration and compilation commands. The --enable-optimizations
flag is recommended for better performance.
4. Install Python
Install the newly compiled Python. Using altinstall
is often safer to avoid overwriting your system's default Python installation.
cd Python-3.3.x
./configure --enable-optimizations
make
sudo make altinstall
Commands to configure, compile, and install Python from source
make altinstall
instead of make install
when installing Python from source, especially on Linux systems. make install
can overwrite your system's default Python, potentially breaking system utilities that rely on it.Solution 3: Using a Virtual Environment
While virtual environments don't directly solve the missing _sqlite3
module issue, they are crucial for isolating project dependencies. If you're working on a Django project, always use a virtual environment. Once the base Python installation has the _sqlite3
module working, your virtual environment will inherit this capability.
python3.3 -m venv myproject_env
source myproject_env/bin/activate
pip install Django
Creating and activating a virtual environment for a Django project
Verification
After applying any of the solutions, verify that the _sqlite3
module can be imported successfully. Open a Python 3.3 interpreter and try to import the module.
import sqlite3
print(sqlite3.version)
print(sqlite3.sqlite_version)
Verifying the sqlite3 module import and version
If these commands execute without an ImportError
, your issue is resolved. You should now be able to run your Django applications or any other Python 3.3 code that relies on SQLite.