Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I install Python packages system-wide on MacOS? [duplicate]

For example, if I run:

pip3 install matplotlib

I get error:

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.

[notice] A new release of pip is available: 24.0 -> 24.1.2
[notice] To update, run: python3.12 -m pip install --upgrade pip

And when I do:

brew install matplotlib

That just hangs for ever, even hours later, even though installing matplotlib in a venv only takes a few minutes.

What gives? How can I install matplotlib system-wide using pip3 on MacOS, and bypass the stupid externally managed error?

like image 699
user22200698 Avatar asked Apr 30 '26 08:04

user22200698


1 Answers

Try following the advice in the message. First,

python3 -m pip install matplotlib --break-system-packages

If you are doing this all the time, it would also make sense to edit your pip.conf file. The file is usually located at ~/.config/pip/ for macOS, though you may need to create it if it does not already exist. Add the following lines to your pip.conf file:

[global]
break-system-packages = true
user = true

Finally, upgrade pip:

python3 -m pip install --upgrade pip --break-system-packages

This will bypass the PEP 668 protections and allow the installation of packages globally without creating virtual environments.

like image 185
dimitriy Avatar answered May 02 '26 21:05

dimitriy



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!