
En aquest xicotet article t'explique com podem executar python en un entorn virtual (venv) i instal·lar programes amb pip sense preocupar-nos de trencar el sistema.
Fa uns anys vaig escriure diversos scripts en Python per automatitzar tasques senzilles, com generar galeries HTML amb les meues fotos d’astrofotografia. Tot funcionava perfectament… fins que un dia, en provar-los en un sistema Linux més recent, Python em va rebre amb un missatge estrany quan intentava instal·lar un paquest des de pip3:
$ pip3 install sty
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.
A partir d’aquell moment, pip install ja no funcionava com sempre. Aquest article mostra què significa eixe missatge, per què ara passa, i com vaig aconseguir fer funcionar els meus scripts antics gràcies als entorns virtuals (venv). Els entorns virtuals són imprescindibles en el Python modern. Instal·lar un entorn virtual per a Python és una bona pràctica.
Les versions modernes de Debian, Ubuntu i derivats, protegeixen el Python del sistema operatiu.Això evita que una instal·lació feta amb pip puga trencar dependències internes d’altres programes que també usen Python (com apt, software-properties, etc.).
Per treballar amb scripts propis, la solució neta i recomanada és crear un entorn virtual. Això crea una còpia aïllada del Python del sistema, on pots instal·lar paquets sense risc. Per a poder crear entorns virtuals, instal·larem python3-venv:
sudo apt install python3-venv
Ara crearem un entorn virtual i ja podrem executar el instal·lador de Python pip que ens permet instal·lar aplicacions fàcilment sense preocupar-nos de la versió del sistema principal Python. En aquest exemple instal·le sty i execute EL_TEU_PROGRAMA.py:
python3 -m venv venv
source venv/bin/activate
pip install sty
python EL_TEU_PROGRAMA.py