The aim of virtualenv is to provide your own instance of Python as maintaining different versions of packages is really tricky. This tutorial shows how to have a tailored Python environement for your program : You can create a directory for your program "mon_programme" : nicolas.greneche@magi1:~$ mkdir mon_programme nicolas.greneche@magi1:~$ cd mon_programme Then, you can create a virtualenv based mon Magi's Python in a subdirectory called "venv" : nicolas.greneche@magi1:~$ virtualenv -p /usr/bin/python3.9 venv You may activate the brand new environement : nicolas.greneche@magi1:~$ source venv/bin/activate You can check that your default Python is from the virtualenv : (venv) nicolas.greneche@magi1:~/mon_programme$ which python /nfs/homes/nicolas.greneche/mon_programme/venv/bin/python Finally, you can install your own packages in the virtualenv : (venv) nicolas.greneche@magi1:~/mon_programme$ pip install numpy