La ejecución de pip install en un entorno virtual intenta instalar paquetes en el directorio predeterminado de Python

Resuelto arjeplog asked hace 9 meses • 1 respuestas

Estoy intentando instalar módulos para Python en mi raspberry pi 5 en un entorno virtual pero solo dice que el entorno se administra externamente.

Comencé activando el entorno virtual e intentando instalar el paquete que necesitaba, pero me decía que el entorno estaba administrado externamente.

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.

Verifiqué qué pip y python estaba usando y era el del entorno virtual.

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

Así que intenté usarlo --break-system-packagesporque pensé que tal vez algo andaba mal. Descargó e instaló el paquete.

(.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

Luego intenté verificar mi lista de paquetes instalados y no estaba allí.

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

Así que salí y verifiqué la lista de la instalación predeterminada de Python y estaba allí.

(.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
...

También intenté seguir esto pero tampoco funcionó.

arjeplog avatar Feb 16 '24 01:02 arjeplog
Aceptado

sudoejecuta un nuevo rootshell que no tiene idea de la configuración actual de su shell (incluido qué entorno virtual está activo).

Absolutamente no lo use sudosi desea instalar cosas en el entorno virtual propiedad del usuario actualmente activo.

De todos modos, el único propósito de tener un entorno virtual es que usted mismo lo controle completamente; por lo que no necesita rootprivilegios para modificarlo (y si de alguna manera lo logra, crear rootarchivos de propiedad allí lo arruinaría, porque entonces ya no podrá cambiar esos archivos sin volver a hacerlo root).

tripleee avatar Feb 15 '2024 18:02 tripleee