anyenv + pyenv

OSS のライブラリを眺めていると何の気なしに「ちょっと触ってみたい」と思うことがある。 だが持っている言語のバージョンが対応するバージョンと違うことも多々有り、 推奨のバージョンをダウンロードしてインストールして PATH を通して、、 と前処理が多くなってくると面倒に感じてしまって「もういいや」と諦めてしまう事がある。

基本的には docker なんかでそのあたりが解決されていると嬉しいし、 されていなければ Dockerfile なり docker-compose.yml を自分で書いたら良いんだけど、 やりたいのはそのプロジェクトをちょっと試してみたいって事であって、 それに対する敷居が高ければ高いほどやる気がめげてしまう。

そのためいつでも言語のバージョンなんかをサクッと切り替えれたりする方法を持っておくことは悪い選択ではない。

今回は anyenv 経由で pyenv を導入することにする。 pyenv だけでも良いが、どうせやるなら他の言語でも今後同じような問題を回避できるようにしておきたくて anyenv 経由での導入を試みる。

導入手順

前提

  • OS: Ubuntu 18.04
    • まだ 18.04 なんですか?いやいや LTS なんで。
    • とは言っても 20.04 もありますよね?みたいな話は別にしたくない。(誰と戦っているんだ
  • python -V
    • 2.7.17
  • python3 -V
    • 3.6.9

anyenv 導入

README を見ると brew でのインストール方法が先頭に記載されている。 特にこだわりや事情がなければ brew をインストールするのも悪くない。 今となっては Ubuntu でも brew は使えるし、 自分も次 OS のバージョンを上げるときには多分初めから brew を揃えると思う。

けどこの PC に関しては長い間 apt でやってきたので、 今更このライブラリは apt で入れたけどこっちのライブラリは brew で入れてて・・・みたいなのを考えたくない。 そのためここに記す手順では brew を使わない方向で導入を進めようと思う。

1$ git clone https://github.com/anyenv/anyenv ~/.anyenv
2$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc
3$ type anyenv
4# -> anyenv は /home/k.s.k./.anyenv/bin/anyenv です

これで anyenv コマンドは揃う

1$ anyenv init
2# -> 「eval "$(anyenv init -)"」を .bash_profile に記載しろと出力されるが .bashrc に記載する
3# ここまで出来たらターミナルを起動するか `exec $SHELL -l` を実行する
4$ anyenv install --init

これで anyenv が無事インストールされた。 試しに anyenv install -l とすると導入できる XXXXenv の一覧を見ることが出来るだろう。

pyenv 導入

インストールした anyenv を使って pyenv を導入する。

1$ anyenv install pyenv

これで pyenv コマンドが使えるようになっている。 次に使用したい Python のバージョンをインストールする。

1$ pyenv install -l
2# -> インストール可能なバージョンの一覧が表示される
3$ pyenv install 3.9.5
4$ pyenv versions
5# -> インストールが問題なくできていればここで `3.9.5` が表示される

今回試した環境では上記の流れで一度インストールが失敗したが、 そのときのエラーメッセージに よくある問題とその解決の事例 の URL が記載されており、 そこを読むと、そもそも理想的な環境として下記インストールを先にしておきましょうとあったので、 そちらに従っておくことで上記エラーを克服した。

1sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
2libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
3libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

所感

今後ちょっと気になる OSS を少し試し食いしたいなぁくらいのときに手間をかけずに サクッと試せるようになったと思えば、ほんの少しの手間をかけてこれらを導入することは損にはならないと思う。 インストール作業の途中で何か上手く行かなくても、エラーログを見たら次に何をしたら良いかが明確だったし、 とても丁寧に作られているように感じた。

© 2021 K.S.K. All rights reserved., Built with Gatsby