Я хотел использовать iPython Notebook в Python 3 на Ubuntu 14.04. Поскольку у меня есть оба Python 2.7 и Python 3.4, установленные в моей системе, - и по другим причинам, связанным с реализацией, я решил использовать виртуальную среду Python (с virtualenv). До сих пор было очень мало написано об этой теме ... Как правильно установить пакет python pyzmq? Как установить последнюю версию ноутбука IPython в Ubuntu 12.04?
В этих отчетах конкретно не рассматриваются Python 3 и виртуальные среды. Кроме того, официальные и различные неофициальные руководства по установке iPython Notebook также не имеют отношения к этому варианту использования.
Основная проблема, с которой я столкнулся, связана с библиотекой ZMQ. Для установки библиотеки и связок Python в системной области я использовал apt-get:
sudo apt-get install libzmq3 libzmq3-dev python3-zmq
Но когда я попробовал pip install ipython[notebook], либо внутри, либо вне моего virtualenv, установка завершилась с выходом статус 1 и предупреждения:
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.
Основная проблема, с которой я столкнулся, связана с библиотекой ZMQ. В качестве альтернативы, официальный представитель , имеющий pyzmq построить собственную зависимость libzmq:
pip install pyzmq --install-option="--zmq=bundled"
Но это не удалось, потому что не удалось найти определенный файл заголовка:
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
Но это не удалось, потому что он не смог найти определенный файл заголовка:
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
Не было проблем. После этого я попытался установить pyzmq в свою виртуальную среду с помощью:
easy_install pyzmq
Я также попытался создать pyzmq из источника. В обоих случаях я мог видеть на выходе, что была обнаружена надлежащая версия ZMQ (4.0.5), но установка завершилась неудачно, потому что у меня не было установлен Cython (недостаточно хорошо документированная зависимость для построения pyzmq, в мое мнение).
После установки Cython для Python 3 ...
sudo apt-get install cython3
Я попытался установить pyzmq снова с pip и с easy_install как внутри, так и вне виртуальной среды; он все еще не работает. После установки Cython для Python 3 ...
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.
И эта файловая структура:
$ 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
Сообщение об ошибке «Python.h» указывает на то, что вам не хватает пакета python3-dev, который вам нужно для создания любых расширений Python (модулей Python, написанных на C), с которыми вы можете связаться:
apt-get install python3-dev
Чтобы начать работу с нуля:
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
Установленные пакеты:
build-essential: компиляторы и заголовки для создания объектов на Ubuntu. python3-dev: заголовки (Python.h), необходимые для компиляции любых расширений Python. libzmq3-dev: библиотека libzmq и ее заголовки. Это необязательно, но рекомендуется. PyZMQ свяжется с libzmq, найденным в системе, если это возможно, иначе он будет строить libzmq как расширение Python. pip, virtualenv: не нужно, но используется для обхода ошибки Ubuntu, которая ломается python3 -m venv.Я выполнил приведенные выше команды в базовом контейнере докеры ubuntu:14.04, чтобы убедиться, что их достаточно для успешного создания pyzmq в virtualenv.