pythonpip

IPython installation: "error: externally-managed-environment"


I need to install IPython on Mac. My current Python interpreter version is:

python3 --version

Output:

Python 3.12.6

And:

which python3

Output:

/opt/homebrew/bin/python3

Similar to this post (IPython installation on Mac), I don’t have Anaconda on Mac. I am now trying to install IPython using pip3. When I try to install IPython, initially I was getting a error related to a private / custom repository hosted on GCP. Hence I ran the below command.

pip3 install --isolated --index-url https://pypi.org/simple ipython

Now I get the below error, i.e., "error: externally-managed-environment"

As root:

pip3 install --isolated --index-url https://pypi.org/simple ipython

Output:

[notice] A new release of pip is available: 24.2 -> 25.0.1
[notice] To update, run: python3.12 -m pip install --upgrade pip
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.

    If you wish to install a Python library that isn't in Homebrew,
    use a virtual environment:

    python3 -m venv path/to/venv
    source path/to/venv/bin/activate
    python3 -m pip install xyz

    If you wish to install a Python application that isn't in Homebrew,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. You can install pipx with

    brew install pipx

    You may restore the old behavior of pip by passing
    the '--break-system-packages' flag to pip, or by adding
    'break-system-packages = true' to your pip.conf file. The latter
    will permanently disable this error.

    If you disable this error, we STRONGLY recommend that you additionally
    pass the '--user' flag to pip, or set 'user = true' in your pip.conf
    file. Failure to do this can result in a broken Homebrew installation.

    Read more about this behavior here: <https://peps.python.org/pep-0668/>

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

I’m not looking to create a virtual environment. I'm trying to understand why this error is occurring and how to fix it.


Solution

  • This bit of text should give you a good hint as to why this error is popping up:

        You may restore the old behavior of pip by passing
        the '--break-system-packages' flag to pip, or by adding
        'break-system-packages = true' to your pip.conf file. The latter
        will permanently disable this error.
    

    Installing Python packages and raw digging them on your system used to break Python-based system dependencies quite a lot back in the day.

    For more details, see Python dependencies: break your system if you want by Jairo Andres.

    Just use a virtual environment. See the venv module in the Python documentation.