geerlingguy/mac-dev-playbook

Python error: externally-managed-environment

Opened this issue · 3 comments

I followed your instructions in the README:

➜  backup git:(main) ✗ xcode-select --install
xcode-select: note: Command line tools are already installed. Use "Software Update" in System Settings or the softwareupdate command line interface to install updates
➜  backup git:(main) ✗ sudo pip3 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.

Instead using homebrew to install ansible was the solution for me

@tbrodbeck - Definitely an option. What I do is just run the command again with --break-system-packages, it hasn't caused any issues for me since that warning was added a couple years ago, though I'm not a full-time Python developer.

I generally do application dev inside Docker containers, so again, I don't care to learn about pyenv, or any of the new age Python environment manager tools like uv and such! Call me old fashioned, it just seems there's a new way to handle local Python environments every few months, and it's too much to keep up with :P

Yup as a Python dev myself, I can say that this is one of the biggest painpoints. In a container or virtual environment this should work without problem!
Maybe I would not recommend using sudo in general when running pip (its not needed).

Love your videos btw!