Je voulais utiliser iPython Notebook dans Python 3 sur Ubuntu 14.04. Étant donné que Python2.7 et Python 3.4 sont installés sur mon système (et pour d'autres raisons liées à l'implémentation), j'ai décidé d'utiliser un environnement virtuel Python. (avec virtualenv
). Très peu de choses ont été écrites sur ce sujet jusqu'à présent ...
Ces rapports ne gèrent pas spécifiquement Python 3 et les environnements virtuels. En outre, le officiel et divers guides non officiels pour installer iPython Notebook ne traitent pas non plus de ce cas d'utilisation.
Le problème principal que j'ai rencontré est celui de la bibliothèque ZMQ. Pour installer la bibliothèque et les liaisons Python à l'échelle du système, j'ai utilisé apt-get
:
Sudo apt-get install libzmq3 libzmq3-dev python3-zmq
Mais lorsque j'ai essayé pip install ipython[notebook]
, à l'intérieur ou à l'extérieur de mon virtualenv
, l'installation échouait avec l'état de sortie 1 et les avertissements:
Warning: Detected ZMQ version: 4.0.4, but pyzmq targets ZMQ 4.0.5.
Warning: libzmq features and fixes introduced after 4.0.4 will be unavailable.
J'ai confirmé dans le gestionnaire de paquets Synaptic que le paquet libzmq3
pour Ubuntu est uniquement la version 4.0.4. Comme alternative, I essayé ce correctif , ayant pyzmq
construire sa propre dépendance libzmq
:
pip install pyzmq --install-option="--zmq=bundled"
Mais cela a échoué car il n'a pas pu trouver un fichier d'en-tête particulier:
buildutils/initlibsodium.c:10:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Ensuite, j'ai construit libzmq
version 4.0.5 à partir des sources.
wget http://download.zeromq.org/zeromq-4.0.5.tar.gz
tar -xzvf zeromq-4.0.5.tar.gz && rm zeromq-4.0.5.tar.gz
cd /usr/local/zmq/zeromq-4.0.5
./configure
make -j 6
Sudo make install
Aucun problème rencontré. Après cela, j'ai essayé d'installer pyzmq
dans mon environnement virtuel avec:
easy_install pyzmq
J'ai aussi essayé de construire pyzmq
à partir de la source. Dans les deux cas, j'ai pu voir dans la sortie que la version correcte de ZMQ (4.0.5) avait été détectée, mais l'installation a échoué car Cython ne m'avait pas installé (dépendance non documentée pour la construction pyzmq
, À mon avis).
Après avoir installé Cython pour Python 3 ...
Sudo apt-get install cython3
J'ai essayé d'installer à nouveau pyzmq
avec pip
et avec easy_install
à la fois à l'intérieur et à l'extérieur de l'environnement virtuel; cela n'a toujours pas fonctionné. Ce message a été remis malgré le fait que cython3
soit installé:
Fatal: Cython-generated file 'zmq/backend/cython/_device.c' not found.
Cython >= 0.16 is required to compile pyzmq from a development branch.
Please install Cython or download a release package of pyzmq.
Et cette structure de fichier:
$ ls -l zmq/backend/cython/
checkrc.pxd context.pxd __init__.py _poll.pyx utils.pxd
constant_enums.pxi context.pyx libzmq.pxd rebuffer.pyx utils.pyx
constants.pxi _device.pyx message.pxd socket.pxd _version.pyx
constants.pyx error.pyx message.pyx socket.pyx
Enfin, j'ai envisagé d'installer iPython Notebook à l'échelle du système (en dehors d'un environnement virtuel). J'avais déjà essayé d'installer pyzmq
à l'échelle du système, mais cela ne suffisait pas.
Lorsque j'ai envisagé d'installer iPython Notebook en dehors de l'environnement virtuel, j'ai compris: "Comment obtenir pip
une discrimination entre Python 2.7 et Python 3.4? " Je suis allé chercher et j'ai trouvé cette excellente réponse . En fait, il se trouve que mon problème central était lié à pip
. J'ai installé la pip
correspondant à ma version Python 3:
Sudo apt-get install python3-setuptools
Sudo easy_install3 pip
Et après cela, installer à la fois pyzmq
et ipython[notebook]
fonctionnait parfaitement dans mon environnement virtuel:
pip3.4 install pyzmq
pip install ipython[notebook]
J'ai utilisé accidentellement pip
au lieu de pip3.4
pour ipython[notebook]
mais cela fonctionne quand même:
(my-virtual-env)me@computer:~$ pip freeze
Jinja2==2.7.3
MarkupSafe==0.23
certifi==14.05.14
ipython==2.3.1
pyzmq==14.4.1
tornado==4.0.2
Cependant, l'utilisation de pip3.4
était nécessaire pour que pyzmq
soit installé dans un environnement virtuel Python 3. .
Le message d'erreur "Python.h" indique que le paquetage python3-dev
, dont vous avez besoin pour créer des extensions Python (modules Python écrits en C), est manquant:
apt-get install python3-dev
Pour être opérationnel à partir de zéro:
apt-get update && apt-get install python3-dev python3-pip build-essential libzmq3-dev
pip3 install virtualenv
virtualenv -p $(which python3) myenv
source myenv/bin/activate
pip install pyzmq
python -c 'import zmq; print(zmq.zmq_version())'
# 4.0.4
Les packages installés:
python3 -m venv
.J'ai exécuté les commandes ci-dessus dans un conteneur docker de base ubuntu:14.04
pour vérifier qu'elles suffisent pour créer avec succès pyzmq dans un fichier virtualenv.