skip to Main Content

I am trying to install modules for python on my raspberry pi 5 in a virtual environment but it just says that the environment is externally managed.

I started with activating the virtual environment and trying to install the package I needed but it just told me the environment was externally managed.

clock@system-time:/clock $ source .venv/bin/activate
(.venv) clock@system-time:/clock $ sudo python3 -m pip install inputimeout
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.

    For more information visit http://rptl.io/venv

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 checked which pip and python it was using and it was the one from the virtual environment.

(.venv) clock@system-time:/clock $ which pip
/clock/.venv/bin/pip
(.venv) clock@system-time:/clock $ which python
/clock/.venv/bin/python

So I tried using --break-system-packages because I though maybe there was just a something wrong. It downloaded and installed the package.

(.venv) clock@system-time:/clock $ sudo python3 -m pip install inputimeout --break-system-packages
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting inputimeout
  Downloading inputimeout-1.0.4-py3-none-any.whl (4.6 kB)
Installing collected packages: inputimeout
Successfully installed inputimeout-1.0.4
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

I then tried checking my list of installed packages and it was not there.

(.venv) clock@system-time:/clock $ pip list
Package    Version
---------- -------
pip        23.0.1
setuptools 66.1.1

So I exited and checked the list for the default installation of python and it was there.

(.venv) clock@system-time:/clock $ deactivate
clock@system-time:/clock $ pip list
Package                            Version
---------------------------------- ----------
arandr                             0.1.11
asgiref                            3.6.0
astroid                            2.14.2
asttokens                          2.2.1
av                                 10.0.0
Babel                              2.10.3
beautifulsoup4                     4.11.2
blinker                            1.5
certifi                            2022.9.24
chardet                            5.1.0
charset-normalizer                 3.0.1
click                              8.1.3
colorama                           0.4.6
colorzero                          2.0
cryptography                       38.0.4
cupshelpers                        1.0
dbus-python                        1.3.2
dill                               0.3.6
distro                             1.8.0
docutils                           0.19
executing                          2.0.1
Flask                              2.2.2
gpiozero                           2.0
html5lib                           1.1
icecream                           2.1.3
idna                               3.3
importlib-metadata                 4.12.0
inputimeout                        1.0.4
...

I also tried following this but it just didn’t work either.

2

Answers


  1. sudo runs a new root shell which has no idea about your current shell’s settings (including which virtual environment is active).

    Absolutely don’t use sudo if you want to install things into the currently active user-owned virtual environment.

    Anyway, the entire purpose of having a virtual environment is that it’s completely controlled by yourself; so you do not need root privileges to modify it (and if you somehow managed to, creating root-owned files in there would wreck it, because then you can no longer change those files without becoming root again).

    Login or Signup to reply.
  2. Sorry couldn’t comment so added here, Did you get it working have same issue posted a question

    error: externally-managed-environment on virtualenv in pip python3 package installation

    but no response if I dont use sudo it says [Error 13] permission denied, if i use sudo it goes externally managed environment, what is somehow happening is system is not allowing package to be installed unless sudo and if you sudo it it is installing it on main python environment. I dont know how to tackle it, was working fine previously this happened after recent update.
    However packages are installing fine with apt install python3-pkg but on main system but cant access them in venv

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search