📝
Docker による Python環境に z3py をインストール
はじめに
下記記事で、z3py (SMTソルバz3のPythonバインディング) を利用する方法を記載しました。
ただし、Dockerを用いたPython環境では、pip install z3-solver
が失敗します。本記事では、その対処方法について記載します。
失敗原因
下記エラーメッセージの通り、cmake がインストールされていないことが原因です。
インストール時にz3本体もソースコードからビルドするため、必要なのだと思われます。
error: [Errno 2] No such file or directory: 'cmake'
対処方法
コンテナをrootユーザで起動
cmakeのインストールには、sudo
コマンドを利用します。
そのため、下記コマンド(-u root
オプションを追加)を用いて、rootユーザでコンテナを起動します。
docker run -it --rm -u root --name jupyter jupyter/scipy-notebook
gccをインストール
下記コマンドで、パッケージの一覧を最新の状態にした後に、build-essential
パッケージをインストールします。この中にgcc
が含まれています。
sudo apt-get update
sudo apt-get install build-essential
cmakeをインストール
下記コマンドでインストールします。
sudo apt-get install cmake
z3pyをインストール
ここまで準備ができたら、下記コマンドが成功するはずです。インストールには数分程度かかる場合があります。[1]
pip install z3-solver
まとめ
Dockerを用いたPython環境では、pip install z3-solver
が失敗するケースについて、対処方法を記載しました。
-
もし、
g++: internal compiler error: Killed (program cc1plus)
のようなエラーが出る場合は、コンテナに割り当てるメモリのSwap領域が不足している可能性があります。私の環境では、Memory=3.0GB、Swap=2.0GBで動作しました。 ↩︎
Discussion