cshogiは、今までPYPIに登録していなかったので、GitHubのReleaseのWheelファイルのURLを指定してインストールする必要があった。
PYPIに登録することで、以下のコマンドで簡単にインストールできるようにした。
pip install cshogi
Python用の将棋ライブラリとしては、python-shogiがあるが、cshogiはベースの部分をC++で実装しているので、10倍近く高速に動作する。
しかし、ソースからインストールする際にC++のビルド環境が必要になるため、インストールに多少ハードルがあった。
事前にビルドしたWheelをGitHubのReleaseページからURLを指定してインストールできるようにしていたが、URLをいちいち確認する必要があるため、Python公式のレポジトリであるPYPIに登録を行った。
以前にも登録しようとしたが、Linux用のWheelファイル作成にCentOS6を使用する必要があり、環境構築が煩雑なため保留したままになっていた。
今回、Linux用Wheel作成用のDockerイメージを使えば比較的簡単にできることが分かったので対応した。
以下、PYPI向けLinux用Wheelファイル作成手順を残しておく。
Dockerコンテナ実行
Ubuntuでは、PYPI向けのWheelが作成できないため、manylinuxコンテナを使用する。
x64向けのmanylinux2010_x86_64を使用した。
docker run --rm -it -v $(pwd):/workspace -w /workspace quay.io/pypa/manylinux2010_x86_64
ソースclone
git clone https://github.com/TadaoYamaoka/cshogi.git
Pythonのバージョン別Wheel作成
WheelファイルはPythonのバージョン別に作成する必要がある。
manylinuxコンテナでは、複数バージョンのPythonが用意されている。
ls /opt/python/
で、用意されているPythonのバージョンが調べられる。
以下では、Python 3.7向けを例に説明する。
ビルドに必要なパッケージインストール
/opt/python/cp37-cp37m/bin/pip install numpy /opt/python/cp37-cp37m/bin/pip install Cython
Wheelファイル作成
cd cshogi /opt/python/cp37-cp37m/bin/python setup.py bdist_wheel
distディレクトリにWheelファイルが作成される。
ここで作成されたWheelファイルでは、まだPYPIに登録できない。
auditwheelツールを使用して、PYPIに登録可能なWheelに変換を行う。
cd dist auditwheel repair cshogi-0.0.6-cp37-cp37m-linux_x86_64.whl
dist/wheelhouseに、変換済みのWheelファイルが作成される。
ファイル名は、以下のようにlinuxだったところが、manylinux2010になっている。
cshogi-0.0.6-cp37-cp37m-manylinux2010_x86_64.whl
同様の手順で、複数のPythonのバージョン向けのWheelファイルが作成できる。
2020/11/1 追記
Ubuntu 18.04 LTS標準のPython3のpip3コマンドでは、インストールできないようである。
manylinux2010は、pip 19.0以上が必要だが、UbuntuのPython3は、pip 9.0.1のためである。
Ubuntu標準のPython3にインストールするには、事前にpipをアップグレードする。
python3 -m pip install --upgrade pip
その後、pip3コマンドでインストールできる。
pip3 install cshogi
なお、manylinux1コンテナを使用すれば、標準のpipのバージョンに対応したWheelを作成できるが、OSが古すぎるためnumpyのインストールから失敗するため、pipのアップグレードで対応することにした。