[Python] venv + Debian

Daniele Tricoli eriol a mornie.org
Dom 15 Mar 2020 06:18:18 CET


Ciao Alessandro,

On Thu, Mar 12, 2020 at 11:18:21AM +0100, Alessandro T. wrote:

[CUT]

> Quindi qualche domanda:
> * la scelta di symlinks è una prerogativa di Debian? per risparmiare 10MB?
> ha qualche senso più profondo?

No, non è una scelta di Debian, i symlink sono il default ovunque tranne in
Windows:

    https://github.com/python/cpython/blob/3.5/Lib/venv/__init__.py#L407-L410

Vinay Sajip ha dedicato una sezione del PEP a symlink vs copie:

    https://www.python.org/dev/peps/pep-0405/#copies-versus-symlinks

Tieni presente che il supporto per i symlink su Mac OS X venne aggiunto poco
più di un mese dopo[¹] rispetto al commit che instroduceva venv. Per questo
motivo ho scritto ovunque tranne che Windows.

[¹] https://github.com/python/cpython/commit/90db661b4335eaf7a3cb5e9a4524ae9707eeaf76

> * per i prossimi progetti `python3 -m venv --copies venv` sarà sufficiente?

Sì, se vuoi avere una copia dell'interprete nel venv, ricorda però che devi
gestirne gli aggiornamenti di sicurezza.

> * dov'è possibile cambiare il comportamento predefinito da symlinks a
> copies?

Dalla domanda che poni mi pare di capire che i virtualenv li crei manualmente.
Ti suggerirei la cosa che ti viene più semplice, puoi crearti un alias per 
`python3 -m venv --copies`, farti uno script shell, oppure se vuoi
usare Python puoi importarti venv.EnvBuilder instanziarlo con le opzioni che ti
sono più consone.
Come hai visto dal codice puoi solo passare l'opzione da linea di comando.

> * è possibile ripristinare l'ambiente al precedente 3.7? copiare il vecchio
> python3.7 non è stato sufficiente, magari c'è una qualche procedura... al
> momento non è un grosso problema: per quei progetti con moduli aggiunti creo
> nuovi ambienti con '--copies' e sistemo le dipendenze. (grazie quarantena)

Fossi nei tuoi panni, semplicemente distruggerei il virtualenv e lo ricreerei
con l'interprete che mi serve.
Però la variabile  PATH viene aggiornata quando fai il source dello script
activate, quindi puoi guardare lì.
In ogni caso te lo sconsiglio, IMO non ne vale proprio la pena.

HTH,

-- 
  Daniele Tricoli 'eriol'
  https://mornie.org


Maggiori informazioni sulla lista Python