Python est téléchargeable depuis www.python.org et depuis les différents gestionnaires de paquets des distributions GNU/Linux.
En fonction du système d'exploitation et de la manière dont on a la possibilité de l'administrer, l'installation et le maintien à jour d'un environnement Python performant peut devenir laborieux.
Existance d'outils permettant de créer des environnements virtuels Python (virtualenv
et virtualenvwrapper
) lors de l'installation ou du développement de certains autres logiciels Python nécessitant des versions spécifiques de certaines dépendances.
Ressources sur ces environnements virtuels Python:
Il peut aussi être conseillé d'utiliser des distributions Python adaptées à un environnement scientifique : ces distributions offrent un grand nombre de bibliothèques (par défaut la majorité de celles vues aujourd'hui).
https://www.anaconda.com/distribution/
C'est probablement la distribution la plus répandue.
Elle s'appuie sur l'outil de virtualisation d'environnement conda
et est fournie avec environ 200 bibliothèques pré-installées et de nombreuses autres pré-compilés sont disponibles en téléchargement (-> plus simples à installer pour les utilisateurs Windows qu'en utilisant pip
avec une installation traditionnelle de Python).
Contrairement aux distributions suivantes, elle n'est pas fournie avec un IDE desktop mais on pourra l'utiliser avec la majorité des IDE Python traditionnels : https://docs.anaconda.com/anaconda/user-guide/tasks/integration/#using-ides.
Distribution spécifique Windows (7/8/10) qui comprend un grand nombre des bibliothèques vues aujourd'hui (NumPy, SciPy, Matplotlib, pandas, etc.), l'IDE Spyder et Jupyter.
Cette distribution (entièrement portable si besoin) est également fournie avec un compilateur (permettant par exemple de compiler et d'éxecuter du code Cython directement depuis Spyder ou Jupyter, ou d'installer des dépendances qui nécessitent de compiler du code externe).
Enthought Canopy : Distribution scientifique complète avec un IDE, Jupyter, Matplotlib, NumPy and SciPy (avec les derniers drivers Intel MKL), Matplotlib, etc. et plus de 600 packages pré-compilés pour une installation facile et rapide.
- Enthought est une des principales sociétés ayant participé au développement de bibliothèques scientifiques en Python.
- https://www.enthought.com/products/canopy/
Python(x,y) : Distribution scientifique avec Spyder, Qt, MinGW, etc.
- Host, run, and code Python in the cloud!
- https://www.pythonanywhere.com/
NumPy et SciPy peuvent s'appuyer sur des bibliothèques de plus bas niveau pour certaines opérations (utilisation de l'API BLAS qui utilise certaines fonctionnalités des processeurs telles que l'utilisation d'instructions SIMD).
Sans rentrer dans les détails, on notera que différentes implémentations existent (OpenBLAS, Intel® Math Kernel Library, ATLAS, etc.) et que toutes n'offrent pas les mêmes performances.
Il est possible de savoir quelle configuration est utilisée par NumPy :
import numpy as np
np.__config__.show()
blas_mkl_info: NOT AVAILABLE blis_info: NOT AVAILABLE openblas_info: libraries = ['openblas', 'openblas'] library_dirs = ['/usr/local/lib'] language = c define_macros = [('HAVE_CBLAS', None)] blas_opt_info: libraries = ['openblas', 'openblas'] library_dirs = ['/usr/local/lib'] language = c define_macros = [('HAVE_CBLAS', None)] lapack_mkl_info: NOT AVAILABLE openblas_lapack_info: libraries = ['openblas', 'openblas'] library_dirs = ['/usr/local/lib'] language = c define_macros = [('HAVE_CBLAS', None)] lapack_opt_info: libraries = ['openblas', 'openblas'] library_dirs = ['/usr/local/lib'] language = c define_macros = [('HAVE_CBLAS', None)]
from numpy.distutils.system_info import get_info
import sys
print("version: %s\nmaxint: %i\n" % (np.__version__, sys.maxsize))
info = get_info('blas_opt')
print('BLAS info:')
for kk, vv in info.items():
print(' * ' + kk + ' ' + str(vv))
version: 1.16.2 maxint: 9223372036854775807 BLAS info: * libraries ['openblas', 'openblas'] * library_dirs ['/usr/lib/x86_64-linux-gnu'] * language c * define_macros [('HAVE_CBLAS', None)]
%load_ext rpy2.ipython
%R sessionInfo()
The rpy2.ipython extension is already loaded. To reload it, use: %reload_ext rpy2.ipython
R.version |
ListVector with 14 elements.
|
||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
platform |
StrVector with 1 elements.
|
||||||||||||||||||||
locale |
StrVector with 1 elements.
|
||||||||||||||||||||
... | ... | ||||||||||||||||||||
matprod |
StrVector with 1 elements.
|
||||||||||||||||||||
BLAS |
StrVector with 1 elements.
|
||||||||||||||||||||
LAPACK |
StrVector with 1 elements.
|
IDE scientifique basé sur Qt. Il intègre une console IPython et prend en charge l'affichage des graphiques matplotlib (notamment) directement dans la console.
L'éditeur de code à proprement parlé n'est pas le plus flexible ni le plus configurable qui existe.
IDE professionnel dont il existe une version community.
Interface plutôt jolie mais peut-être plus effrayante à l'usage pour les débutants.
Intègre de nombreux outils liés à la gestion d'un projet en Python.
C'est un intepréteur interactif basé sur IPython mais permettant d'utiliser des noyaux d'une centaines de langages.
Basé sur le concept des notebooks (calepins électroniques), il permet de combiner des sections en langage naturel, des sections de codes informatiques et différents autres types de médias (graphiques statiques ou interactifs, images, vidéos, etc.).
Il permet d'exporter ces notebooks sous différentes formes : HTML, PDF, scripts Python, slides reveal.js, etc.
Récemment arrivé, Jupyter Lab étend les fonctionnalités des notebooks Jupyter en offrant un véritable environnement de travail (bien que toujours basé sur un naviguateur web) avec une interface plus flexible.
En plus de la manipulation de notebooks on peut, comme dans un IDE classique, travailler sur plusieurs fichiers de code source (et avoir une console associée), tout en bénéficiant des nombreux langages supportés par Jupyter.
On peut ainsi réellement éxécuter du code R et Python dans deux onglets voisins, dans un même environnement de travail.