Introduzione

Nei giorni scorsi mi è capitato di dover utilizzare un applicazione che richiede python2 come interprete di defaulut nel env, quindi avevo bisogno di arrivare a un output del genere:

$ python --version
Python 2.7.18

ma come sappiamo in questo periodo python2 sta cadendo in disuso e molte distribuzioni linux non lo stanno più includendo di default sul sistema. Di seguito una delle possibili soluzioni al problema.

python2 con environment-modules

Installazione

Per prima cosa procedere all’installazione di python2, su ArchLinux si procede con il seguente comando:

$ pacman -S python2

Per avere un overview su environment-modules vi consiglio di leggere questo articolo, per installarlo consiglio di usare un AUR helper e installare il seguente pacchetto env-modules-tcl.

Configurazione

Arriviamo adesso al punto cruciale, i passi da eseguire sono:

  • la creazione dei link e delle cartelle per python
  • creazione del file di modulo

Python2 files

Iniziamo a creare la cartella

$ mkdir ~/.local/usr/python2
$ ln -s /usr/bin/python2 ~/.local/usr/python2/python
$ ln -s /usr/bin/python2-config ~/.local/usr/python2/python-config

Creazione del file di modulo

Controllare la propria configurazione di modules :

$ echo $MODULEPATH
/home/<user>/.local/modulefiles:/etc/modules/modulefiles

per il mio utente la cartella dei moduli è ~/.local/modulefiles, quindi andrò a creare il file ~/.local/modulefiles/python2 con il seguente contenuto:

#%Module1.0#####################################################################
##
## python2 modulefile
##

prepend-path PATH ~/.local/usr/python2/

Esempio di prova

Di seguito un esempio d’uso:

$ module avail # questo comando lista i moduli dispinibili
-------------------------- ~/.local/modulefiles -----------------------
python2  

$ module list # questo comando lista i moduli caricati
No Modulefiles Currently Loaded.

$ python --version # controllo la versione di python disponibile
Python 3.8.6

$ module load python2 # carico il modulo python2

$ module list # controllo i moduli caricati
Currently Loaded Modulefiles:
 1) python2  

$ python --version # controllo la versione di python disponibile
Python 2.7.18

Riferimenti