Installer Python 3.4 sur Mac OSX avec virtualenvwrapper et pip

Mac OS X est fourni avec python 2.7.x par défaut. python 3.4 est sorti il y a quelques jours, et voici comment l’installer avec virtualenvwrapper et pip sur votre Mac. Cette procédure a été testée avec succès sur plusieurs OS X 10.9 et il est possible qu’elle fonctionne aussi sur d’autres versions d’OS X. Il est également fort probable qu’elle fonctionne avec les versions ultérieures de python.

Installer python 3.4

Vous devez être administrateur de l’ordinateur pour pouvoir effectuer l’installation.

Rendez vous sur la page de téléchargement de python et choisissez l’installeur au format DMG de la dernière version 3.4 pour les systèmes 10.6 ou supérieurs. Ouvrez le fichier DMG puis exécutez l’installeur (Python.mpkg) qui s’y trouve. Choisissez l’installation par défaut puis suivez les instructions.

Une fois que l’installation est terminée, ouvrez un terminal, puis tapez la commande python3. Un shell interactif doit s’ouvrir. Bravo, python 3 est installé. Pour quitter, tapez quit() ou alors appuyez sur les touches CTRL et D simultanément.

Depuis la version 3.4, pip est préinstallé, super ! Il permet d’installer des paquets python (Flask, Django, Sphinx, etc.) très facilement. Lorsque pip installe un paquet, celui-ci est placé dans le dossier site-packages de python.

À ce stade, vous devriez pouvoir utiliser la commande pip3 dans le terminal, et cette dernière devrait afficher un message d’aide.

Installer virtualenvwrapper

Vous travaillez sur plusieurs projets nécessitant des versions différentes de python ou des versions différentes des bibliothèques ? Alors virtualenvwrapper va vous permettre de travailler sur ces projets de manière isolée, dans le but d’éviter bien des problèmes. Vous ne travaillez que sur un seul projet ? Installez-le quand même.

Voici comment installer ce paquet indispensable.

pip3 install virtualenvwrapper

virtualenvwrapper installe virtualenv en tant que dépendance. virtualenvwrapper est une surcouche de virtualenv destinée à faciliter la mise en place d’environnements virtuels.

L’étape suivante consiste à configurer virtualenvwrapper et pip. Cela se fait simplement grâce à des variables d’environnement. Dans un terminal, collez les lignes suivantes qui vont ajouter les variables dans votre fichier ~/.bash_profile.

echo "# indique à virtualenvwrapper la version de python à utiliser" >> $HOME/.bash_profile
echo "export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.4/bin/python3" >> $HOME/.bash_profile

echo "# indique à virtualenvwrapper la version de virtualenv à utiliser" >> $HOME/.bash_profile
echo "export VIRTUALENVWRAPPER_VIRTUALENV=/Library/Frameworks/Python.framework/Versions/3.4/bin/virtualenv" >> $HOME/.bash_profile

echo "# virtualenvwrapper utilise ce répertoire pour stocker les fichiers des environnements virtuels" >> $HOME/.bash_profile
echo "export WORKON_HOME=$HOME/.virtualenvs" >> $HOME/.bash_profile

echo "# virtualenvwrapper utilise ce répertoire pour stocker les différents projets" >> $HOME/.bash_profile
echo "export PROJECT_HOME=$HOME/python_devel" >> $HOME/.bash_profile

echo "# activation de virtualenvwrapper en mode paresseux" >> $HOME/.bash_profile
echo "source /Library/Frameworks/Python.framework/Versions/3.4/bin/virtualenvwrapper_lazy.sh" >> $HOME/.bash_profile

echo "# indique à pip qu'il doit mettre en cache les paquets" >> $HOME/.bash_profile
echo "export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache" >> $HOME/.bash_profile

echo "# indique à pip qu'il ne peut fonctionner que dans un virtualenv actif" >> $HOME/.bash_profile
echo "export PIP_REQUIRE_VIRTUALENV=true" >> $HOME/.bash_profile

Ensuite, fermez puis relancez votre terminal, ou alors exécutez cette commande afin d’activer les variables d’environnement ajoutées.

source $HOME/.bash_profile

Ensuite, créez le dossier qui contiendra vos projets.

mkdir $PROJECT_HOME

Voilà, virtualenvwrapper est prêt à être utilisé.

Utiliser virtualenvwrapper et pip

Voici quelques exemples basiques d’utilisation.

Créer un environnement

La création d’un environnement se fait via la commande mkvirtualenv avec pour argument le nom de l’environnement à créer. Ici, je crée un environnement nommé web_env, qui comme son nom l’indique va me permettre de créer un environnement contenant divers paquets relatifs au développement web. L’environnement est stocké dans $WORKON_HOME/web_env/.

mkvirtualenv web_env

Une fois créé, l’environnement devient actif. Son nom est alors affiché dans le prompt du terminal.

Une solution alternative consiste à créer un projet via la commande mkproject suivie du nom du projet à créer. Ici, je crée un projet nommé ma_galerie_web. Ce projet est stocké dans $PROJECT_HOME/ma_galerie_web/. Un environnement portant le même nom est également créé dans $WORKON_HOME/ma_galerie_web/. L’environnement contient les différents paquets nécessaires au projet.

mkproject ma_galerie_web

Une fois créé, l’environnement est activé, et le dossier courant devient le dossier du projet. Son nom est également affiché dans le prompt du terminal.

Quelle méthode choisir ? Celle qui vous plait le plus. Personnellement, je préfère la méthode mkproject qui permet d’associer un projet à un environnement.

Installer et gérer les paquets

La configuration ajoutée dans le fichier ~/.bash_profile interdit à pip d’installer des paquets si un environnement virtuel n’est pas actif.

Vous souhaitez rechercher un paquet afin de l’installer. Par exemple, pour chercher le paquet Django, il suffit d’exécuter la commande suivante. Cette commande peut prendre du temps, donc patience.

pip search django

Pour installer un paquet, c’est très simple.

pip install django

Ce paquet n’est alors disponible que dans l’environnement courant. Pour l’utiliser dans un autre environnement, il faudra le réinstaller.

Pour installer une version spécifique d’un paquet, il faut préciser son numéro de version.

pip install django==1.6.1

La commande suivante permet de mettre à jour un paquet dans sa version la plus récente.

pip install --upgrade django

La commande suivante permet de lister les paquets installés dans l’environnement courant.

pip list

La commande suivante permet d’exporter la liste des paquets installés dans le but de permettre à des contributeurs de disposer d’un environnement identique.

pip freeze > requirements.txt

La commande suivante permet aux contributeurs d’installer les paquets à partir du fichier requirements.txt.

pip install -Ur requirements.txt

Si vous avez besoin d’aide, pip le permet grâce à la commande suivante.

pip help

La commande suivante permet d’obtenir de l’aide sur une commande précise de pip, la commande install, par exemple.

pip help install

Pour plus d’informations, consultez le guide utilisateur de pip.

Désactiver un environnement virtuel

Lorsque vous avez terminé d’utiliser votre environnement virtuel, ou si vous souhaitez en utiliser un autre, il faut désactiver l’environnement courant. Ceci se fait grâce à la commande suivante.

deactivate

Lister les environnements existants

Si vous avez plusieurs environnements et que vous souhaitez en connaitre la liste, il suffit d’utiliser la commande suivante.

lsvirtualenv

Activer un environnement ou un projet

Lorsque vous créez un environnement ou un projet, il est activé automatiquement. Pour réactiver un environnement qui a été désactivé, il suffit d’utiliser la commande workon avec comme argument le nom de l’environnement ou projet à activer.

workon ma_galerie_web

Supprimer un environnement

Vous n’avez plus besoin d’un environnement et souhaitez le supprimer, il faut d’abord le désactiver. Sa suppression s’effectue grâce à la commande rmvirtualenv. Si l’environnement que vous souhaitez supprimer est le nom d’un projet, seul l’environnement correspondant est supprimé, pas le projet.

rmvirtualenv web_env

Utiliser les hooks des environnements virtuels

Les hooks servent à effectuer des actions automatiquement lors de la création, l’activation, la désactivation, etc, d’un environnement.

Si votre projet a besoin de variables d’environnement, il est possible de les créer automatiquement lors de l’activation de l’environnement. Lorsque l’environnement est désactivé, ces variables d’environnement sont effacées. Pratique, non ?

echo "export MY_VAR=my_value" >> $WORKON_HOME/ma_galerie_web/bin/postactivate
echo "unset MY_VAR" >> $WORKON_HOME/ma_galerie_web/bin/predeactivate

La première ligne ajoute une variable d’environnement dans le hook postactivate. Une fois l’environnement ma_galerie_web chargé, la variable d’environnement MY_VAR est définie. La seconde ligne détruit cette variable au moment où l’environnement est désactivé. Vous pouvez exécuter des commandes dans ces scripts. Ce n’est pas limité qu’à des variables d’environnement.

Il est également possible d’effectuer des actions lors de la création d’un nouvel environnement. Par exemple, il est possible d’installer un système de documentation automatiquement lorsqu’un nouvel environnement ou projet est créé. Mais comme indiqué plus haut, vous pouvez mettre ce que vous voulez dans ces hooks.

echo 'pip install sphinx' >> $WORKON_HOME/postmkvirtualenv

Partager un environnement virtuel avec PyCharm

Les instructions précédentes sont valables avec python en ligne de commande. Si vous utilisez PyCharm, il est possible d’utiliser ces environnements virtuels au sein de l’éditeur.

Il faut dans un premier temps ajouter les environnements virtuels souhaités à la liste des interpréteurs python dans PyCharm. Pour cela, ouvrez les préférences, puis choisissez Project Interpreter. Cliquez ensuite sur le lien Configure Interpreters. Ici sont listés tous les interpréteurs actuellement configurés dans PyCharm.

Cliquez sur le bouton + en dessous de la liste et choisissez le chemin vers l’interpréteur de l’environnement virtuel désiré. Si celui-ci n’apparaît pas, vous devrez indiquer son emplacement en cliquant sur Local…

Utilisation d'un environnement virtuel dans PyCharm.

Utilisation d’un environnement virtuel dans PyCharm.

Après que vous ayez choisi le chemin vers l’environnement virtuel, PyCharm affiche une barre de progression pendant la configuration puis demande si vous souhaitez utiliser l’interpréteur python de cet environnement : “Set as project interpreter for this project?”. Cliquez sur Yes. Voilà.