Skip to main content

How to Solve "ModuleNotFoundError: No module named 'git'" in Python

The error ModuleNotFoundError: No module named 'git' in Python indicates that you are trying to use the GitPython library, but it is not installed in your current Python environment. This is not an error about the git command-line tool itself being missing; it's about the Python library that lets you interact with Git repositories from Python code.

This guide explains how to resolve this error by correctly installing GitPython.

Understanding the Error: git vs. GitPython

It's essential to understand the difference:

  • git (lowercase): This is the command-line tool for Git version control (e.g., git clone, git commit). This error is not about this tool being missing.
  • GitPython: This is a Python library that provides a way to interact with Git repositories from your Python code. The error means this library is not installed in your Python environment.

Installing GitPython with pip

The standard way to install GitPython is using pip, Python's package installer.

Basic Installation

Open your terminal (or command prompt on Windows) and run:

pip install GitPython

If you have multiple Python versions installed or your pip is associated with Python 2, use:

pip3 install GitPython

Using python -m pip (If pip Isn't in Your PATH)

If the pip command doesn't work (e.g., "command not found"), it might not be in your system's PATH. Use this command instead:

python -m pip install GitPython  # Use with your system's default Python
python3 -m pip install GitPython # Use with your system's python3
  • The python -m pip command ensures that you're using the pip associated with your Python installation.

Windows-Specific Considerations (py launcher)

On Windows, the py launcher is often the best way to select a specific Python version:

py -m pip install GitPython
  • The py command will use the latest version of Python.

Permissions Issues (sudo or --user)

On Linux or macOS, you might need sudo for system-wide installation (but virtual environments are strongly preferred):

sudo pip3 install GitPython

Alternatively, install into your user's site-packages without needing sudo:

pip install GitPython --user

Always use virtual environments for Python development. This isolates your project's dependencies and avoids conflicts between different projects:

Creating a Virtual Environment

python3 -m venv venv  # Create a virtual environment named "venv"
# OR: python -m venv venv
# OR: py -m venv venv (Windows)

Activating the Environment

  • macOS / Linux:

    source venv/bin/activate
  • Windows (Command Prompt):

    venv\Scripts\activate.bat
  • Windows (PowerShell):

    venv\Scripts\Activate.ps1

After activation, your command prompt will usually show the environment name (e.g., (venv)).

note

If the activation on Windows (PowerShell) fails, you may need to set the execution policy:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Installing GitPython Inside the Environment

With your virtual environment activated, install GitPython:

pip install GitPython  # Installs into the active environment

Troubleshooting

If you've installed GitPython but still get the ModuleNotFoundError, consider these:

  • IDE Configuration (VS Code, PyCharm): Your IDE might be using a different Python interpreter than the one you used for installation.

    • VS Code: Press Ctrl+Shift+P (or Cmd+Shift+P on macOS), type "Python: Select Interpreter", and choose the correct one (the one associated with your virtual environment, if applicable).
    • PyCharm: Go to File > Settings > Project > Python Interpreter (or PyCharm > Preferences > Project > Python Interpreter on macOS) and select the correct interpreter.
  • Conflicting Installations / Multiple Python Versions: If you have multiple Python versions installed without using virtual environments, you may have installed GitPython for the wrong version. Always use virtual environments to avoid this.

  • Incorrect Filenames/Variable Names: Never name your own Python files git.py. This will conflict with the GitPython library. Also, don't create a variable named git before importing git.

  • Restarting Your IDE/Kernel: Sometimes, especially in interactive environments like Jupyter notebooks or after installing a new package, you need to restart the Python kernel or the entire IDE.

  • Reinstalling GitPython As a last resort, you can try reinstalling the GitPython package, as it might resolve any issues that might be cause by incorrect or partial installations:

# First uninstall
pip uninstall GitPython

# Then install again
pip install GitPython

Using GitPython (Example)

Here's a simple example to verify that GitPython is installed and working:

from git import Repo

try:
repo = Repo('.') # '.' represents the current directory
print("Successfully initialized GitPython with the current directory.")
#Further operations with git, e.g., checking if repo is dirty:
#assert not repo.bare
except Exception as e: # Catches all exceptions that can be thrown by GitPython
print(f"Error initializing GitPython: {e}")
  • This code attempts to initialize a Repo object for the current directory (which should be a Git repository).
  • The try...except block handles potential errors during initialization.

Installing GitPython in Specific Environments

Anaconda

conda install -c conda-forge gitpython

Jupyter Notebook

Within a Jupyter Notebook cell, you can use:

!pip install GitPython

The ! tells Jupyter to run the command in the system shell.

Conclusion

The ModuleNotFoundError: No module named 'git' error is resolved by installing the GitPython library using pip.

  • Always use virtual environments to manage your project's dependencies.
  • If you encounter issues, double-check your IDE's Python interpreter settings, and ensure that you have not named your own files git.py.
  • Using the provided example code, you can confirm that GitPython is correctly installed and ready for use.