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
sudo
runs a newroot
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, creatingroot
-owned files in there would wreck it, because then you can no longer change those files without becomingroot
again).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