TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

cshogiをPYPIに登録

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のアップグレードで対応することにした。