Molt bona pregunta! T’ho explico pas a pas:
Què fa source venv/bin/activate?
Aquesta comanda té dues parts:
1. source (o el seu equivalent .)
És una ordre interna de la terminal (bash) que diu:
«Llegeix aquest fitxer i executa les ordres que hi ha dins, com si les hagués escrit jo mateix a la terminal.»
És a dir, en lloc d’obrir el fitxer com un programa independent, el sistema llegeix les instruccions i les aplica al teu entorn actual.
2. venv/bin/activate
És el fitxer que conté les instruccions per «activar» l’entorn virtual. Quan l’executes, fa diverses coses:
- Modifica el PATH: Li diu al sistema «quan executis
pythonopip, fes servir els que hi ha dins devenv/bin/, no els del sistema global». - Canvia el prompt: Afegeix
(venv)al principi de la línia d’ordres perquè sàpigues que ets dins l’entorn virtual. - Defineix variables d’entorn: Configura
VIRTUAL_ENVperquè Python sàpiga que està treballant en un entorn aïllat.
Per què és necessari?
Imagina que tens dos projectes Python:
- Projecte A necessita la versió 1.0 d’una llibreria
- Projecte B necessita la versió 2.0 de la mateixa llibreria
Si instal·lessis tot al sistema global, hi hauria conflictes. L’entorn virtual crea un «espai aïllat» per a cada projecte, on pots tenir les versions que necessitis sense que es barregin.
Quan fas source venv/bin/activate, li estàs dient al sistema:
«A partir d’ara, tots els paquets de Python que instal·li o utilitzi, fes-los servir d’aquesta carpeta
venv, no del sistema global.»
Com crear-lo?
Comencem de zero:
# 1. Esborra l'entorn virtual existent rm -rf venv # 2. Verifica que Python3 està disponible python3 --version # 3. Crea un nou entorn virtual python3 -m venv venv # 4. Activa l'entorn virtual source venv/bin/activate # 5. Verifica que està activat (hauries de veure (venv) al prompt) which python which pip
Recorda per a futures sessions SSH
Cada vegada que et connectis al Synology per SSH i vulguis treballar amb el projecte, hauràs d’activar l’entorn:
cd /volume2/web/polidic
source venv/bin/activate
cd /volume2/web/polidic source venv/bin/activate
deactivate
Instal·lar els paquets que necessitis
pip freeze > requirements.txt
Així, si algun dia has de recrear l’entorn, només hauràs de fer:
pip install -r requirements.txt
Com ho desactivo?
Quan acabis de treballar, simplement escrius:
deactivate
I el teu prompt tornarà a la normalitat (sense el (venv) al davant).
Ara que ja tens l’entorn activat (veiem el (venv) al teu prompt), ja pots executar:
./provar_en.sh
I l’script farà servir les llibreries de Python que hi ha dins de venv, no les del sistema global.

hem de matar el port el procés del port 5040:
sudo netstat -tulnp | grep 5040
sudo kill 14313 (el procés proporcionat a dalt)
(venv) urqtejmi@Synology_sec:/volume1/web/python_server$ sudo kill 14313
(venv) urqtejmi@Synology_sec:/volume1/web/python_server$
Instal·la les llibreries necessàries:
pip install gtts flask
./provar_en.sh ls -lh *.mp3
| Idioma | lang |
|---|---|
| Català | ca |
| Anglès | en |
| Espanyol | es |
| Francès | fr |
| Italià | it |
| Alemany | de |
| Portuguès | pt |
| Neerlandès | nl |
Sí. Aquí hi ha un punt important: Python no s’instal·la dins del venv. El que fem és crear el venv utilitzant el Python 3.12 que acabes d’instal·lar amb SynoCommunity. Així, quan activis venv, el python3 que veuràs serà el 3.12.
Ara mateix tens:
(venv) urqtejmi@synology_vall:/volume2/web/polidic$ which python3 /volume2/web/polidic/venv/bin/python3
Primer, sense tocar res, comprovaria quin Python 3.12 ha instal·lat SynoCommunity:
which python3.12 python3.12 --version
Si surt Python 3.12.x
Jo faria una còpia del venv actual i en crearia un de nou amb Python 3.12:
cd /volume2/web/polidic
Desactiva el venv actual:
deactivate
Fes una còpia de seguretat:
mv venv venv_old
Ara crea el nou venv amb Python 3.12:
python3.12 -m venv venv
Activa’l:
source venv/bin/activate
I comprova:
which python3 python3 --version
Hauria de sortir aproximadament:
/volume2/web/polidic/venv/bin/python3 Python 3.12.x
🎯 Això és exactament el que busquem.
Després instal·larem les llibreries
Una vegada confirmem que funciona:
python3 -m pip --version
i:
python3 -m pip list
Llavors podrem instal·lar al nou entorn Python 3.12 les llibreries que necessites per al teu projecte polidic, per exemple Flask, gTTS, etc., sense barrejar-les amb el Python del sistema.
No eliminaria encara venv_old, perquè així conservem l’entorn anterior per si alguna llibreria del Polidic depèn de la versió antiga.
Fes ara només aquestes dues:
which python3.12 python3.12 --version
i passa’m el resultat. A partir d’aquí et dono les ordres exactes per al Synology.