64ビット環境のポータブルなPython(WinPython)用にCエクステンションをビルドしてみた。
ポータブルな64ビットのPythonディストーションWinPythonを使う
最近は64ビット環境へ移行する必要がいくつか出てきたので、
なんて記事を書きながらいろいろと調査していたりします。
今回は、64ビット環境を構築するのにできるだけ楽をしようということで、WinPythonというディストーションを使ってみました。
WinPythonは、Python(x,y)をつくっている二人のメイン開発者のうちの一人Pierre Raybautさんがやっているみたいですが、彼が普段メインでつかう32ビットのC:\Python27の方に影響がないようなUSBメモリで持ち歩けるポータブルな64ビット版のPythonが欲しいと思って作ったみたいで、今回の用途にまさにうってつけです。
WinPythonのお陰で、64ビット用にコンパイルするのが非常に難しいnumpy/scipyを含めてIPython,Spyder,xlrd,VTKなど約80程のライブラリが一気にインストールされるので、楽ちんです。
しかし、今回こまったのはtiffファイルの読み込みに便利なtifffile.pyというライブラリ。PyPIにもなかったりするライブラリですが、16ビットなTIFFファイルを読むのがPILなんかにくらべて大変早いので、重宝しています。
ただし、インストールには付属のtifffile.cというCエクステンションを自分でビルドしないといけないのですが、64ビット環境では普通にGCCでビルドできずに、ちょっと手こずったので記事にしておきます。
Cエクステンションをビルドするには
python setup.py build_ext --inline
をしてやる必要がありますが、このときのpythonがシステムにパスが通っている方じゃなくってWinPythonの方のPythonをつかって欲しいので、WinPythonが用意したコンソールをつかってこのコマンドを実行します。
私は、WinPythonをCドライブに直にインストールしたので、パスは
C:\WinPython-64bit-2.7.6.4
という感じで、ここにいろいろとEXEの形のランチャーがありますが、WinPython Command Prompt.EXEがWinPython用のコンソールのランチャーになります。
これを使ってコンソールを立ち上げて、それからtifffile.py、setup.py、tifffile.cが入ったソースコードのフォルダにいきます。ちなみにsetup.pyはファイルとして配布されていないので、
from distutils.core import setup, Extension
import numpy
setup(name='_tifffile',
ext_modules=[Extension('_tifffile', ['tifffile.c'],
include_dirs=[numpy.get_include()])])
という内容でつくれと、cのソースコードの方にあるとおりにつくります。
で、このコンソールからソースコードのあるフォルダに移動して、python setup.py build_ext --inlineしてみると、vcvarsall.batが見つからないとか怒られるので-c mingw32をつけて
python setup.py build_ext -c mingw32 --inline
とするととっても長いエラーで最後
error: command 'gcc' failed with exit status 1
になるので、どうやら32ビットのGCCではコンパイルできない模様。
追記)よく考えたらGCCはシステムのパスに通っているものが使われていたはずなので、単にGCCが64ビット版じゃなかっただけかも。Mingw-w64を使えばよかったのか。
追記2) 後日別PCがでanacondaの64ビットPython3.4.4で試したところ、libpythonをconda install libpythonしておけばあとは、pip install tifffileとするだけでちゃんとバージョン0.8がインストールできた。Python35にはlibpythonが配布されてないのでPython35ではおそらくTheanoのインストールでやったように手動でlibmsvcr140.aとlibpython35.aをgendefとdlltoolで作成しないとだめだろう。
Microsoft Visual C++ Express Edition 2008をインストール
Victor JaburさんのBlogポストを参考にMicrosoft Visual C++ Express Edition 2008をインストールしてみると、いきなりステップ1.1がリンク切れで躓く。
stackoverflowの質問Visual C++ 2008 Express Download Link Dead? [closed]の回答にMicrosoft Visual C++ 2008 Express with SP1へのリンクがあり、助かった。
もしかしたらMicrosoft Visual C++ Compiler for Python 2.7でも良いかもしれない。
あとは1.9まで従って変更する。
いよいよWinPythonのコンソールから
python setup.py build_ext -c msvc --inline
で、ビルドできた。しかし、なぜか
python setup.py install
してもWinPythonのPythonではインポートが失敗するので、tifffile.pyと_tifffile.pydを
C:\WinPython-64bit-2.7.6.4\python-2.7.6.amd64\Lib
へ手作業でコピーしたらうまく行った。
« BRIAN OKKEN氏のWhy Most Unit Testing is Wasteを読む。 | トップページ | WinPython(64ビット版)でwxPython3.0とpy2exeをインストールしてみた。 »
「パソコン・インターネット」カテゴリの記事
- Linuxのデスクトップ環境にログインした時にxmodmapコマンド実行(2023.12.30)
- youtube-dlでrumbleをダウンロード(2023.12.06)
- Pop!_OSのアプデがfcitxを繰り返し葬る件(2023.05.22)
- vue.jsで遊んでみる(2023.01.02)
- 『将棋神やねうら王』のオープンソース版MyShogiをLinux Mint 19.1でビルドしてみた件(2019.03.24)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
コメント
« BRIAN OKKEN氏のWhy Most Unit Testing is Wasteを読む。 | トップページ | WinPython(64ビット版)でwxPython3.0とpy2exeをインストールしてみた。 »
ソースコードのあるフォルダに移動して、python setup.py build_ext --inlineしてみると、vcvarsall.batが見つからない
投稿: Rajangamen | 2023年1月 2日 (月) 05時28分