Scripts pour les environnements (Win-x64)

Avoir un script de lancement pour fixer les variables d’environnement lié à des outils (pas toujours installés dans des répertoires standard), le PATH (outils, Python), les alias pour faciliter le lancement de programme … est très utile. Je ne confie jamais à Windows cette tâche, le désavantage étant qu’il faut (forcément) lancer le script pour avoir l’environnement dans un terminal et utiliser ce terminal pour lancer les programmes. Depuis très longtemps j’utilise un batch setvars.bat qui est positionné soit dans C:\local en vis à vis d’installation d’outils hors système, ou dans le répertoire de développement (par exemple c:\Dev) ou encore dans un répertoire utilisateur. Et sous Linux (Ubuntu) c’est la même chose avec un script bash ou zsh, d’accord l’organisation fait un peu vintage, mais ç’est solide et ça marche encore.

Article mis à jour en Janvier 2025.

Navigation dans le guide

Guide [ Installation de Python sous Win-x64 ]




1. Activation d’un environnement

J’allège en ne mettant pas tous les outils, mais cela donne une idée réaliste de l’environnement Win-x64 concernant quelqu’un qui travaille à l’interface chimie-biologie-informatique.

Script [ setvars.bat ]
Le script débute par une entête qui permet d’utiliser un peu plus d’une centaine de commandes UNIX like (je tiens à mes habitudes, ls, ll, grep …) dans un environnement Windows :

Puis une partie pour fixer des variables d’environnement et %PATH concernant des outils génériques, par exemple :

Une partie pour les logiciels métier, par exemple:

Puis on mouline les chemins d’accès, une habitude digne du XXème siècle :

Enfin le choix de l’activation d’un environnement (base) ou (prod) ou juste les facilités UNIX like :

Puis quelques alias pour les IDEs et un peu d’info sur le %PATH :

En gros sous Ubuntu ça sera à peu près similaire à la syntaxe et localisation près.

Utiliser la commande setvars pour lancer le batch.

Ce qui donne quelque chose dans le style (extrait) pour lancer l’environnement (prod) si on répond par ‘P’:

C:\Dev>setvars
*** SETVARS (2024/09 PYTHON3)
*** Set Windows Paths
*** Set UNIX commands
*** Set Graphviz and dot executables

*** Set Path
*** Set conda environment
(N) no environment
(B) BASE environment
(P) PROD environment
Choice [N, B, P]?p
*** Setting conda environment (prod)
*** Set some aliases
alias: 'scite' for SciTE editor
alias: 'geany' for Geany editor*** Configuration information
...
*** Going at home
*** SETVARS *** done
(prod) C:\Dev>

L’environnement choisi étant paramétré, par exemple il ne reste qu’à lancer un IDE, défini en tant qu’alias, pour éditer des programmes.

2. Installation de (base) + miniforge3

Cette approche permet d’intégrer l’ordre des paquetages, les mises à jour, une vision globale et l’allumage/extinction d’options. C’est le gros morceau car le script installe la plupart des paquetages généralistes, à partir de l’installation initiale de Python. Pour la partie paquetages, chaque ligne correspond à un groupe de paquetages qui vont généralement ensemble et qu’il vaut mieux installer après d’autres groupes.

Script [ install-base.bat ]
Dans un premier temps, nous fixons le packager et les options:

Si installation, nous avons une séquence pour les différents paquetages :

Puis une partie spécifique au cas ou cela soit nécessaire pour certains IDEs (ex: Spyder):

De quoi faire une mise à jour générale:

Puis générer un fichier de spécifications avec une ligne pour mamba et une pour conda :

3. Fichiers de spécification

On note que le script permet de peupler l’environnement préexistant (base) avec des paquetages, mais aussi de générer un fichier de spécifications avec une commande list redirigée vers un fichier de manière à sauver la liste des paquetages avant et/ou après l’installation.

Utilisation de conda
La ligne pour conda est call %CONDA_MODE% list --explicit > base-packages.txt  ce qui donne un fichier qui contient la liste de chaque module et sous la forme url-canal-paquetage-version-build.conda :

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: win-64
@EXPLICIT
https://repo.anaconda.com/pkgs/main/win-64/blas-1.0-mkl.conda
https://repo.anaconda.com/pkgs/main/win-64/ca-certificates-2024.7.2-haa95532_0.conda
...

Utilisation de mamba
Mamba ne dispose pas de l’option --explicit, la ligne pour mamba est call %CONDA_MODE% list > base-packages.txt et donnera un fichier différent:

List of packages in environment: "C:\\Python3"

  Name                    Version                  Build                    Channel
-----------------------------------------------------------------------------------------
_openmp_mutex             4.5                      2_gnu                    conda-forge
archspec                  0.2.3                    pyhd8ed1ab_0             conda-forge
attrs                     24.3.0                   pyh71513ae_0             conda-forge
...

Dans les deux cas il sera possible d’exploiter ces fichiers pour une installation ou un clonage d’environnement.

4. Installation de (base) + miniforge3

Pour mémoire, car nous utilisons préférentiellement miniforge3. Dans ce cas conda sera exclusivement utilisé, le script install-base-miniconda.bat est très proche de son équivalent mamba précédent. Il y aura des différences dans la gestion des canaux:

Dans le choix de certains paquetages, par exemple:

Dans les modalités de mises à jour:

Et l’option --explicit sera utilisable pour la génération du fichier de spécifications.

Notes d’installation
Il s’agit d’une installation mise à jour pour les ToS d’Anaconda. Dans le cas d’une distribution miniconda3 classique, conformément aux règles de construction des environnements Python, il n’y aura que des paquetages issus des canaux pkgs/main/win-64 (incluant des binaires-librairies) ou pkgs/main/noarch (des codes purement python).

5. Installation de (prod)

Le script est basé sur la même construction, mais il inclue des paquetage du canal conda-forge (conda-forge/noarch et conda-forge/win-64) ainsi que des appels éventuels à pip via des commandes pip install <nom-paquetage>.

Script [ install-prod.bat ]
Le script, à la date d’édition de l’article, est encore mixte: miniconda3/miniforge3.

Nous retrouvons les choix d’installation :

Avec deux possibilités conda (miniconda3) et mamba (miniforge3) pour l’installation des paquetages:

Dans le cas de (prod) il est possible de compléter avec des paquetages installés par pip :

Puis des mises à jour générales:

Il y a plusieurs appels possibles à conda/mamba update qui font un peu bizarre: c’est une manière de résoudre des dépendances en cascade, qui marche ou qui cycle. Dans le cas d’une installation miniconda3 avec un environnement (base) constitué à partir du canal defaults, il fallait parfois 4 lignes de mise à jour car certains paquetages se remettaient à jour en changeant de canal.
Puis on termine en générant un fichier de spécifications :

Le fichier sera plus long que dans le cas de (base) car il inclura les paquetages de (base) et de (prod).

Il est recommandé de sauver quelques versions successives des fichiers de spécification de manière à pouvoir supprimer un environnement et de le recréer sur la même machine, sans passer par les scripts.

Retour en haut