Help us understand the problem. What is going on with this article?

anacondaにsentencepieceをwheelファイル経由でインストールする

背景

  • 機械学習関連のライブラリをインストールするためにanacondaを使用
  • コンフリクトを避けるためpipは使わずcondaでパッケージ管理
  • sentencepieceのPythonバインディングをインストールしたい

実行環境

  • CentOS 6.7
  • (pyenv)anaconda3-5.3.1
  • conda createで仮想環境を作ってその中でインストール

リポジトリにあるか確認

$ conda search sentencepiece

ヒットせず。

conda skeleteonを使ってみる(失敗)

  • anacondaのリポジトリになくてPyPIにある(pip installできる)パッケージは、conda skeletonを使うことでcondaにインストールするためのレシピファイルを作成できる
$ conda skeleton pypi sentencepiece

Error: No source urls found for sentencepiece
というエラーが出て失敗。

sentencepieceのPyPIにはwhlファイルはあるが
tar.gzファイルがなかったのでインストールできず失敗した模様。

自分でcondaレシピを作る

  • conda skeletonで作られるレシピを参考に作る
  • meta.yaml, build.shが必要って書いてあったけどmeta.yamlだけでインストールできた
  • sentencepiece/meta.yaml を編集する
$ mkdir sentencepiece
$ vim sentencepiece/meta.yaml
  • meta.yaml はこんな感じ
{% set name = "sentencepiece" %}
{% set version = "0.1.82" %}

package:
  name: "{{ name|lower }}"
  version: "{{ version }}"

source:
  url: https://github.com/google/sentencepiece/releases/download/v0.1.82/sentencepiece-0.1.82-cp37-cp37m-manylinux1_x86_64.whl
  sha256: 3fc02ba62f2d5c624f3f107cc256c1c5f877fb7fa80754e2e7cd7f0aa5e0c86f

build:
  number: 0
  script: "{{ PYTHON }} -m pip install sentencepiece-0.1.82-cp37-cp37m-manylinux1_x86_64.whl --no-deps --ignore-installed -vvv "
requirements:
  host:
    - pip
    - python
  run:
    - python
test:
  imports:
    - sentencepiece
  • ポイント
    • 先頭にインストール対象のライブラリ名(sentencepiece)とバージョン(0.1.82)を記述する
    • source.urlにGitHub上のwhlファイルのURLを記述する
    • sha256チェックサムはなくても動くらしいが、一応事前にダウンロードしてチェックサムを調べてから書いておく
    • build.scriptにwhlファイルをpip installするコマンドを書く(build.shの代わり)
    • --no-deps --ignore-installedを付けているのは他の依存ライブラリをインストールさせないため
    • もしかしたら必要ない行があるかも
  • できたらビルドする
$ conda build sentencepiece
最後にファイルが残ってると言われるので掃除する
$ conda build purge
  • ビルドが無事完了したらインストールする
$ conda install --use-local sentencepiece
  • インストールが完了したら作成したレシピディレクトリを削除する
$ rm -r sentencepiece

まとめ

  • conda skeleton pypiで上手くレシピが作れなくても自分でmeta.yaml書けばインストールできる
  • wheelファイルがあるライブラリなら大体condaでもインストールできそう

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした