|
|
# Comment déployer des environnements Python sous Windows 10 avec Conda
|
|
|
|
|
|
Nous prendrons les exemples concrets de pyBERT et pyGIMLi et montrerons comment déployer les outils de développement Spyder, Pycharm et Jupyter Lab. Deux approches seront proposées :
|
|
|
|
|
|
1. Utilisation du Python de Anaconda pour Windows et d'un émulateur de lignes de commandes Bash ([MSYS2](https://www.msys2.org/) ou [Git Bash](https://gitforwindows.org/)),
|
|
|
2. [Utilisation du Python de Anaconda pour Linux dans WSL (le sous système Windows pour Linux) -> sur une autre page du Wiki](Utiliser-Python-Anaconda-pour-Linux-dans-WSL-(le-sous-système-Windows-pour-Linux))
|
|
|
|
|
|
La première méthode est aujourd'hui recommandée pour SAGE. L'utilisation de WSL peut surtout s'avérer utile pour des utilisations avancées nécessitant une meilleure compatibilité Linux.
|
|
|
|
|
|
Les icones suivantes seront utilisées :
|
|
|
* :bangbang: signale une difficulté, un piège ou un point d'attention particulier.
|
|
|
* :bulb: signale une astuce, une remarque, ou une bonne pratique.
|
|
|
* :tada: signale une (supposée) réussite.
|
|
|
* :book: signale les sources utilisées.
|
|
|
|
|
|
## Sommaire
|
|
|
|
|
|
[[_TOC_]]
|
|
|
|
|
|
|
|
|
## Contexte et objectifs
|
|
|
|
|
|
Python est un langage de programation utilisé pour le développement dans un contexte de calcul scientifique, mais aussi par nombre de logiciels classiques. On se trouve souvent avec plusieurs versions de Python sur son ordinateur pour satisfaire les besoins -parfois incompatibles- de différentes applications.
|
|
|
|
|
|
La gestion des versions de Python et des librairies installées peut s'avérer ardues sans quelques bonnes pratiques.Ce wiki a pour but de documenter l'installation de Python pour Windows 10 via la distribution Anaconda. Nous détaillons comment gérer les versions de librairies à l'aide d'environnements Conda et comment ces environnements s'intègrent dans les principaux outils de développement (IDE) Python.
|
|
|
|
|
|
## Utiliser Python Anaconda pour Windows
|
|
|
|
|
|
Il est possible d'installer Anaconda nativement sur Windows et de gérer les environnement python avec la console conda et le navigateur anaconda. Cependant certaines bibliothèques python (**mettre des exemples**) ont des mauvaises performances sur windows voir sont partiellement supportées.
|
|
|
|
|
|
### Installation d'Anaconda pour Windows
|
|
|
|
|
|
:book: https://docs.anaconda.com/anaconda/install/windows/
|
|
|
|
|
|
Télécharger [l'installeur graphique](https://repo.anaconda.com/archive/Anaconda3-2020.02-Windows-x86_64.exe) et suivre les instruction, garder les réglages par défaut, en particulier :
|
|
|
|
|
|

|
|
|
|
|
|
Une fois l'installation complète, :tada: vous avez un Anaconda prêt à être utilisé si vous tapez `anaconda` dans votre menu vous trouverez 3 applications :
|
|
|
|
|
|

|
|
|
|
|
|
+ Anaconda Navigator permet de gérer vos environnement et d'installer des applications graphiquement
|
|
|
+ Anaconda prompt permet la même chose en ligne de commande (plus rapide, plus puissant mais plus complexe à utiliser)
|
|
|
|
|
|
### Installation de pyBERT et pyGIMli dans des environnements virtuels
|
|
|
|
|
|
1. Lancer `Anaconda Navigator`
|
|
|
2. Allez dans l'onglet environement et cliquer `create` en bas à droite
|
|
|

|
|
|
3. Le nommer `pybert` et choisir python 3.7
|
|
|

|
|
|
4. Lancer le terminal Conda dans cet environement
|
|
|

|
|
|
5. Entrer la commande suivante et répondre oui (`y`) aux questions
|
|
|
|
|
|
```
|
|
|
conda install -c gimli -c conda-forge pybert
|
|
|
```
|
|
|
|
|
|
6. Tester
|
|
|
|
|
|

|
|
|
|
|
|
:tada: vous avez un pybert utilisable
|
|
|
|
|
|
### Utilisation du navigateur graphique Anaconda
|
|
|
|
|
|
Lancer Anaconda Navigator puis aller dans l'onglet `Environements` :
|
|
|
|
|
|

|
|
|
|
|
|
Vous voyez alors tous vos environnement, vous pouvez choisir `pybert` cliquer sur la flèche puis `Open in Terminal` pour ouvrir un terminal depuis lequel vous pourrez lancer `pybert` ou installer d'autres paquet avec `conda` par exemple.
|
|
|
|
|
|
Vous pouvez aussi installer des applications directement depuis le navigateur anaconda dans vos environnement depuis l'onglet home.
|
|
|
|
|
|
Par exemple si vous voulez avoir `spyder` dans votre environnement `pybert` :
|
|
|
|
|
|

|
|
|
|
|
|
1. Lancer Anaconda Navigator
|
|
|
2. Aller sur l'onglet Home
|
|
|
3. Choisir l’environnement désiré dans le panneau du milieu `Applications on ` (ici `pybert`)
|
|
|
4. Chercher l'application voulue (ici `spyder)
|
|
|
5. Cliquer sur le bouton install
|
|
|
6. Cliquer sur le bouton `Launch` pour avoir votre application qui tourne dans l'environement pybert
|
|
|
|
|
|

|
|
|
|
|
|
:tada:
|
|
|
|
|
|
### Utiliser conda dans un shell POSIX (gitbash ou MSYS2)
|
|
|
|
|
|
:bangbang: Suite à l'étape précédent vous pouvez utilisez pybert depuis python mais pas lancé la commande `bert`. Pour cela vous avez besoin d'un shell POSIX :bangbang:
|
|
|
|
|
|
Nous recommandons d'utiliser [gitbash](https://gitforwindows.org/) qui est basé sur MSYS2, les réglages présentés ici devraient fonctionner aussi sur ce dernier.
|
|
|
|
|
|
1. Télécharger [gitbash](https://gitforwindows.org/)
|
|
|
2. Lancer l'installer et suivre les choix par défaut
|
|
|
3. À l'écran de choix de l'éditeur par en choisir un que vous connaissez (ne mettez pas vim si vous ne connaissez pas)
|
|
|

|
|
|
4. Lancer git bash
|
|
|
5. Tapper la commande `conda`
|
|
|
6. Si le terminal indique `command not found`, entrer la commande suivante en replaçant `<user>` par votre nom d'utilisateur windows :
|
|
|
```
|
|
|
echo '. C:/Users/<user>/Anaconda3/etc/profile.d/conda.sh' >> .bashrc
|
|
|
```
|
|
|
7. Dites à Git Bash où se trouve le Python sur Windows avec la commande suivante :
|
|
|
```
|
|
|
echo "alias python='winpty python.exe'" >> .bashrc
|
|
|
```
|
|
|
|
|
|
8. Quitter et relancer git bash puis tester :
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
### Applications capable de changer d’environnement
|
|
|
|
|
|
#### Spyder
|
|
|
|
|
|
Spyder est désormais capable de changer d’environnement Conda de manière dynamique à condition de faire un peu de configuration au préalable.
|
|
|
|
|
|
:bangbang: L'explorateur de variables de Spyder utilise l'environnement *base*.
|
|
|
Par exemple, il ne permettra pas d'explorer une *frame* Pandas si cette librairie n'est pas installée dans l'environnement base. C'est un problème MAJEUR. :bangbang:
|
|
|
|
|
|
Cette manipulation n'est fonctionnelle que pour des environnements python 3.
|
|
|
|
|
|
1. Installer Spyder dans l’environnement `Base`
|
|
|
2. Lancer conda prompt
|
|
|
3. Répéter les étapes suivantes pour tous les environnements que vous voulez rendre accessible à Spyder
|
|
|
1. `conda activate myenv`
|
|
|
2. `conda install spyder-kernels`
|
|
|
3. `python -c "import sys; print(sys.executable)"` et copier le chemin retourné
|
|
|

|
|
|
4. Lancer Spyder dans l’environnement base
|
|
|
5. Aller dans `Tools > Preferences > Python Interpreter > Use the following interpreter` et coller le chemin copié en 3.
|
|
|

|
|
|
6. Relancer la console ipython
|
|
|
|
|
|
Pour changer d’environnement, il suffit d'éditer le chemin de l'étape 5 en remplaçant le nom de l’environnement par exemple remplacer `C:\Users\User\anaconda3\envs\pybert\python.exe` par `C:\Users\User\anaconda3\envs\test\python.exe` et relancer la console ipython
|
|
|
|
|
|
##### Erreurs connues
|
|
|
|
|
|
Si vous obtenez cette erreur dans la console python :
|
|
|
|
|
|

|
|
|
|
|
|
1. Mettez à jour Spyder vers 4.1.0 ou plus récent
|
|
|
2. Si la mise à jour via l'interface conda n'est pas possible faire dans un prompt conda base `conda update --all`
|
|
|
2. Relancer Spyder
|
|
|
|
|
|
#### Jupyterlab
|
|
|
|
|
|
Pour pouvoir utiliser vos environnements dans jupyterlab il faut ajouter un kernel ipython dans l’environnement
|
|
|
Lancer Anaconda prompt
|
|
|
|
|
|
Dans l'environement base faire (une seule fois) :
|
|
|
|
|
|
```
|
|
|
conda install -c conda-forge nb_conda_kernels
|
|
|
```
|
|
|
|
|
|
Puis pour chaque environement (ici `pybert`
|
|
|
```
|
|
|
conda activate pybert
|
|
|
conda install ipykernel
|
|
|
ipython kernel install --user --name=pybert
|
|
|
```
|
|
|
|
|
|
Lancer Jupyterlab depuis le menu home de Anaconda navigateur dans l'enviroment base
|
|
|
|
|
|
:bangbang: Jupyterlab est déjà installé dans l’environnement base ,null besoin d'en installer un par environnement
|
|
|
|
|
|
Au démarrage JupyterLab vous demandera de choisir un kernel, choisissez `pybert` pour avoir accès à votre environnement :
|
|
|
|
|
|

|
|
|
|
|
|
:tada: vous avez un pybert utilisable dans jupyter.
|
|
|
|
|
|
Vous pouvez a tout moment changer de kernel en cliquant en haut à droite sur le nom du kernel `Python [conda env:pybert]`
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
#### Pycharm
|
|
|
|
|
|
1. Télécharger [pycharm](https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=windows&code=PCC)
|
|
|
2. Installer pycharm en suivant les recommendations par défaut
|
|
|
3. Lancer pycharm et suivre les instruction
|
|
|
4. Créer un nouveau projet
|
|
|
5. Au choix de l’environnement choisir : "Interpréteur existant" et cliquer sur les points de suspensions
|
|
|

|
|
|
6. Choisir les environnements conda
|
|
|

|
|
|
7. Choisir l’environnement voulu dans la liste et cliquer sur create
|
|
|

|
|
|
|
|
|
:tada:
|
|
|
|
|
|
:bulb: Pour changer l’environnement d'un projet existant :
|
|
|
|
|
|
1. Cliquer sur le nom de l’environnement conda en bas a droite
|
|
|

|
|
|
2. Puis réglages de l’interpréteur
|
|
|

|
|
|
3. Changer l’environnement dans la fenêtre qui s'est ouverte
|
|
|

|
|
|
|
|
|
:bangbang: Par défaut pycharm utilise toujours le prompt windows, pour utiliser git bash suivez les indications suivantes :bangbang:
|
|
|
|
|
|
Aller dans `Ficher > Settings` puis `Tools > Terminal` et mettre Shell path à `C:\Program Files\Git\bin\bash.exe` :
|
|
|
|
|
|

|
|
|
|
|
|
Vous pourrez alors lancer `bert` depuis le temrinal pycharm
|
|
|
|
|
|
:bangbang: Par défaut pycham active l'environement virtuel mais pas conda complètement, nous vous recommmandons de tapper `conda activate pybert` au début de chaque session :bangbang: **TODO : proposer une solution scriptée**
|
|
|
|
|
|
|