web-dev-qa-db-ja.com

Python 3仮想環境にiPython Notebook用のpyzmqをインストールする方法は?

Ubuntu 14.04のPython 3でiPython Notebookを使用したかった。 Python 2.7とPython 3.4の両方をシステムにインストールしているため、およびその他の実装固有の理由により、Python仮想環境を使用することにしました(virtualenvを使用)。これまでのところ、このトピックについてはほとんど書かれていません...

これらのレポートは、Python 3および仮想環境を特に処理しません。さらに、iPython Notebookをインストールするための official およびさまざまな nofficial guides も、このユースケースに対応していません。

私が遭遇した主な問題はZMQライブラリにあります。ライブラリとPythonバインディングをシステム全体にインストールするには、apt-get

Sudo apt-get install libzmq3 libzmq3-dev python3-zmq

しかし、virtualenvの内部または外部でpip install ipython[notebook]を試行した場合、インストールは終了ステータス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.

Synaptic Package Managerで、Ubuntuのlibzmq3パッケージはバージョン4.0.4のみであることを確認しました。代わりに Iこの修正を試しました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

次に、ソースからlibzmqバージョン4.0.5をビルドしました。

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を構築するための文書化されていない依存関係) )。

Python 3のCythonをインストールした後...

Sudo apt-get install cython3

pyzmqeasy_installを使用して、仮想環境の内外でpipを再度インストールしようとしました。それでも動作しませんでした。 このメッセージは、cython3がインストールされているにもかかわらず配信されました:

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 
3
Arthur

最後に、システム全体(仮想環境外)にiPython Notebookをインストールすることを検討しました。以前にシステム全体にpyzmqをインストールしようとしましたが、これでは十分ではありませんでした。

iPython Notebookを仮想環境外にインストールすることを検討したときに、「pipを取得してPython 2.7とPython 3.4を区別するにはどうすればよいですか? I検索して この素晴らしい答えを見つけました 。実際、私の中心的な問題はpipに関連していたことがわかりました。 Python 3バージョンに対応するpipをインストールしました。

Sudo apt-get install python3-setuptools
Sudo easy_install3 pip

その後、pyzmqipython[notebook]の両方をインストールすると、仮想環境内で完全に機能しました。

pip3.4 install pyzmq
pip install ipython[notebook]

pip3.4ipython[notebook]の代わりに誤ってpipを使用しましたが、とにかく動作します:

(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

ただし、Python 3仮想環境にpyzmqをインストールするには、pip3.4を使用する必要がありました。

0
Arthur

「Python.h」エラーメッセージは、Python拡張機能(Cで記述されたPythonモジュール)をビルドするために必要なpython3-devpackageがないことを示しています。

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拡張機能のコンパイルに必要なヘッダー(Python.h)。
  • libzmq3-dev:libzmqライブラリとそのヘッダー。これはオプションですが、推奨されます。 PyZMQは、可能であればシステム上で見つかったlibzmqに対してリンクします。そうでない場合、libzmq自体をPython拡張としてビルドします。
  • pip、virtualenv:必要ではありませんが、回避策として使用します buntuのバグpython3 -m venvが壊れます。

上記のコマンドをベースubuntu:14.04 dockerコンテナーで実行して、virtualenvでpyzmqを正常にビルドするのに十分であることを確認しました。

5
minrk