Windows に superset をインストール

Pocket

Redash の次と言われている superset

以前であれば、

VirtualBox に linux インストールして

という体力ありましたが、それも失せて来たので Windows7 x64 の Anaconda x64 の環境に入れてみました

参考

ここここを参考に進めます

Anacondaインストール

サイトから Windows のバイナリを取得してインストール

手元のマシンが Windows7 の 64bit だったので、64bit の Python 3.6 を取得

インストール自体は何も考えず進めます

つまづく

インストール完了後、itfun.jp さんのページに沿って進めます

superset のインストールドキュメントに則り進めます

Anaconda Prompt で何も考えず、下記を実行

> python get.py
> pip install cryptography
> md c:\Temp

get.py はインストールドキュメントにリンクがあるのでダウンロードして実行します。

続いて pip と setuptools のアップデート

> pip install pip setuptools --upgrade

sasl のバイナリをここからダウンロードしインストール
今回の環境だと Python 3.6 の x64 用

> pip install sasl‑0.2.1‑cp36‑cp36m‑win_amd64.whl

ここまでは順調で、ついに superset のインストール

pip install superset

ここで、cryptography の build が開始し、OpenSSL の openssl/opensslv.h がない旨を告知されます

何も考えずにここから Windows 用 OpenSSL のバイナリ取得すると失敗します

libeay32.lib が存在しないと言われます
なぜなら Windows 用バイナリに含まれてないから・・・

OpenSSLをコンパイル

ここを参考に OpenSSL のコンパイル環境を整えます

まずは、Visual Studio 2015 Community のインストール
続いて、Active Perl のインストール
OpenSSL は公式サイトから openssl-1.0.2k.tar.gz を取得し、展開

Visual Studio C++ Build Tools の x64 の Native Build のコマンドプロンプトで下記コマンドを実行
もし、環境が 32bit なら x86 でやる必要があると思われる

> cd openssl-1.0.2k
>perl Configure no-asm --prefix=c:\openssl\x64 VC-WIN64A
>ms\do_win64a.bat
>nmake -f ms\ntdll.mak install

c:\openssl\x86\bin c:\openssl\x64\bin 配下に
libeay32.dll ssleay32.dll の2つのファイルができます

早速、superset をインストール

> set LIB=c:\openssl\x64\lib
> set INCLUDE=c:\openssl\x64\include
> pip install superset

エラーなく完了

起動してみる

superset はデフォルトだと

c:\ProgramData\Anaconda3\Scripts\superset

にあるはず

Anaconda Prompt で

> cd c:\ProgramData\Anaconda3\Scripts
> fabmanager create-admin --app superset
> python superset db upgrade
> python superset load_examples
> python superset init
> python superset runserver -d

ここまで来たけど、ImportError: cannot import name ‘ForkingMixIn’ と表示されエラーになる

> pip install -U werkzeug

とアップデートで起動できました

-d オプションを付けないと、fcntl モジュールがないと言われます

最終的に VirtualBox の linux に構築した方が楽だったかも

2件のコメント

  1. github のリンクがなくなってますが、最新のだとどれになるのでしょうか?

コメントを残す