Как установить pyzmq для iPython Notebook в виртуальной среде Python 3?

Я хотел использовать 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 

1
задан 13 April 2017 в 15:23

1 ответ

Сообщение об ошибке «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.

3
ответ дан 24 May 2018 в 00:07
  • 1
    Спасибо, что посмотрели на это. Я знаю о семействе пакетов -dev, поэтому я уверен, что я бы установил его в то время (я только что проверил, и сейчас я это делаю). Во всяком случае, моя конкретная проблема, похоже, зависела в то время от использования правильной реализации pip (pip для Python 3). – Arthur 21 May 2015 в 21:00
  • 2
    Отсутствует Python.h означает, что у вас не было заголовков Python во время компиляции. Возможно, у вас было python-dev, но не python3-dev, когда вы его запустили. Мне было бы интересно услышать, есть ли у вас проблемы с запуском установки после того, как вы знаете, что у вас есть python3-dev. – minrk 22 May 2015 в 23:41
  • 3
    Если вы находитесь в virtualenv pip, всегда соответствует версии в env. Вам никогда не нужно использовать pipX в virtualenv, и, возможно, не должен , потому что это самый простой способ случайно выйти из вашего env (например, pip3.4 в Python 3.3 env будет работать , но будет установлен за пределами env, тогда как pip будет всегда установить в активном env). pipX следует использовать только тогда, когда вы не , используя envs. – minrk 22 May 2015 в 23:42

Другие вопросы по тегам:

Похожие вопросы: