本文を読み飛ばす

msys: python-leveldbをMinGW32で使う |{{{1|

Linuxだと導入簡単な leveldb ですが、 Windowsだと、ちょっと工夫が必要です。

1. MinGWで leveldb をビルドする 1. MinGWで python-leveldb をビルドする

MinGW32か、MinGW64を使うかは intall した Python の バイナリ形式で決めます。

1. MinGWで leveldb をビルドする

なんだか毎回わからなくなるんで調べながらやってるんですが、 私の場合は、 zalanyib というソースを使います。

snappy も msys-1.0 の時はコンパイルしてましたが、 今は package にあるのでそっちを使います。

新しい leveldb にも対応させたいですが、 それはまた今度...まずはビルドの準備:

$ pacman -Sy
$ pacman -S mingw-w64-x86_64-snappy
$ pacman -S mingw-w64-x86_64-gcc'

ソースの取得とコンパイル:

$ hg clone git://github.com/zalanyib/leveldb-mingw leveldb-mingw-zalanyib
$ cd leveldb-mingw-zalanyib
$ make

出来上がった、 leveldb.dll は、

2. MinGWで python-leveldb をビルドする

leveldb の python interface が必要ですが、 今回は、 bygreencn にあるものを使います。

まずは、環境準備:

$ pip install virtualenv
$ virtualenv venv
$ (echo "[build]"; echo "compiler = mingw32") > venv/Lib/distutils/distutil.cfg
$ cp leveldb-mingw-zalanyib/libleveldb* venv/Scripts
$ cp leveldb-mingw-zalanyib/leveldb* venv/Scripts

次にソースの取得とコンパイル:

$ hg clone github.com/bygreencn/levelDB-MinGW-Python-0193
$ cd levelDB-MinGW-Python-0193
$ ../venv/Scripts/python setup.py build
$ ../venv/Scripts/python setup.py install

うまく行かないので、 setup.py を調整

MinGW64用 (MinGW32では不要?)

common_flags = [
...
    '-D_hypot=hypot',

DLLの場所を指定...:

path1 = '-L' + os.path.join(path, "..", "..", "leveldb-mingw-zalanyib"),
extra_link_args = [path1, ...

コメント

Comments powered by Disqus
宣伝: