DEV Community

Cover image for Linux pip install problems
Serdar Torlak
Serdar Torlak

Posted on

Linux pip install problems

I am not sure why this happens but each time i install a new linux system and i try to pip install a python library i am getting the following warning/error message:

error: externally-managed-environment

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

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
Enter fullscreen mode Exit fullscreen mode

So if you are having the same problem, here is how to fix it:

First of all make sure you have Pip installed for your linux. Here i'll go with Ubuntu, you can change the command line according to your Linux system:


$ sudo apt update
$ sudo apt install python3-pip

Now check to verify the installation of Pip:

pip3 –version

You're ready to fix the problem for installing modules/librarires for Python. Type the following to your terminal:

$ python3 -m pip config set global.break-system-packages true
Enter fullscreen mode Exit fullscreen mode

You can now install pip packages however use it carefully as there is always a chance to break your linux system!

Top comments (2)

Collapse
 
shanu-kumawat profile image
Shanu Kumawat •

I use poetry with pyenv.
Poetry for managing virtual environment and packages version and pyenv for managing python version, and it works like a charm.
Everyone should try it. Also, it's not recommended to install python packages systemwide like this. It's better to make a python virtual environment for the project.

Collapse
 
kitsunekode profile image
Manash Pratim Bhuyan •

what your doing is totally goes out of the linux package manager philosophy! More like it might break your system packages or updates.

create a venv if you need or just install the package using your package manager such as apt or pacman,

why-:

suppose one of your package uses python-xyx version1.23 in a package to build for a specific package package-var

now u did pip install python-xyx --break-system-packages

what might happen: pip changes the system package installed package

-> its all and good if version are not changed or no version compatibility issues with the package-var

-> but if that happens then package-var breaks, when you try to update your system your package-manager couldn't find the python-xyx package with actual version linked with the installed-list, your update breaks, your package-manager panics , sometime many related packages also breaks all together.

Imagine it being like 2 person working on the main branch with push --force flag. one overwrites someones work and things are all messy and needs a manual fix or kind of redo a whole part