====== anyenv を用いた Python のインストール方法 ======
===== 概要 =====
* 最新版の Python を Ubuntu や LinuxMint で使いたい場合の方法を紹介する。
* 環境は fish-shell (Ver. 3.1.2) を想定している。
* 基本的には、環境変数の書き換えでシェル環境が変わる程度だが、参考サイトには、bash 環境でのインストールも紹介されている。
* 通常の pyenv もあるが、anyenv は pyenv も含め、他の言語環境構築もできるので採用した。
===== 手順 =====
- git をインストールする。\\ $ sudo apt install git
- anyenv をインストールする (今回はホームディレクトリ直下にインストールする)。\\ $ git clone https://github.com/riywo/anyenv ~/.anyenv
- エディタで、''$HOME/.config/fish/config.fish'' に以下の行を追加する。\\
if [ -d $HOME/.anyenv ]
set -x PATH $HOME/.anyenv/bin $PATH
eval (anyenv init - fish | source)
end
- シェルを再読込する。\\ $ exec fish -l
* ''source $HOME/.config/fish/config.fish'' だとうまく環境変数が更新できないため、上のコマンドを実行する。
- anyenv がインストールされたかチェックする。\\ $ anyenv -v
anyenv 1.1.1
- anyenv のプラグインをインストールする。\\
$ mkdir -p ~/.anyenv/plugins
$ git clone https://github.com/znz/anyenv-update.git ~/.anyenv/plugins/anyenv-update
$ anyenv install --init
$ anyenv update
* このプラグインは *env をすべてアップデートする。
* 上記プラグインが使えないようなので、*env のアップデートには、以下のコマンドで対応する (2021/11/30 追記)。\\ $ anyenv install --update
- pyenv をインストールする。\\
$ mkdir ~/.anyenv/envs/
$ anyenv install pyenv
$ exec fish -l
- pyenv がインストールされたかチェックする。\\
$ pyenv -v
pyenv 1.2.18-4-g5b009e87
- 運用に必要なライブラリをインストールする。\\
$ sudo apt install libffi-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev
* ''libffi-dev'': ''ModuleNotFoundError: No module named '_ctypes''' でインストールが失敗すると、再度 pyenv で python をインストールしなければならなくなるため。
* ''libssl-dev'': ''Ignoring ensurepip failure: pip X.Y.Z requires SSL/TLS'' でインストールが失敗する場合
* 参考サイト: [[https://7me.oji.0j0.jp/2018/01/23/pyenv-ignoring-ensurepip-failure/|Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLSを解決するメモ | 7me]]
* ''zlib1g-dev'': ''zipimport.ZipImportError: can't decompress data; zlib not available'' でインストールが失敗する場合
* 参考サイト: [[https://qiita.com/banaoh/items/00aea13fe045fab7e8ba|【pyenv】ubuntu16.04でのpython環境の構築 - Qiita]]
* ''libbz2-dev'': ''Couldn't import standard bz2'' でインストールが失敗する場合
* 参考サイト: [[https://www.chazine.com/archives/3613|PythonでNo module named bz2 | 今日のひとこと]]
* その他のパッケージ
* 参考サイト: [[https://obel.hatenablog.jp/entry/20161225/1482623903|Python 3.6.0 をインストールする際に出てくる警告に対処する(Ubuntu 16.04 LTS) - 約束の地]]
- 特定のバージョンの python をインストールする。\\
$ pyenv install -l
$ pyenv install 3.7.4
- python がインストールされたか確認する。\\
pyenv versions
* system (set by /home/user/.anyenv/envs/pyenv/version)
3.7.4
- Python のバージョンを切り替える。\\
$ pyenv local 3.7.4
$ python --version
Python 3.7.4
$ pyenv versions
system
* 3.7.4 (set by /home/user/.python-version)
- 仮想環境 (''test'') を導入する。\\
$ python -m venv test
$ . test/bin/activate.fish
* この後に、仮想環境で作業する。
* 仮想環境用のツールは test ディレクトリが生成されており、その中に含まれている。
- 仮想環境を終了する。\\ $ deactivate
===== 運用に必要なライブラリ =====
* 手順 9 にあるように、一部の Python のモジュールには、apt でインストールしなければならないライブラリが必要となる。
* もし、このライブラリがない状態で pyenv から Python をインストールすると、''No module'' エラーが出て、プログラムを動かすことができない。
* 上記の状態になった場合、ライブラリインストール後、pyenv でインストールした Python をアンインストールしてのインストールをしなければならない。
==== pandas ====
$ sudo apt install liblzma-dev
$ pip install pandas
==== Jupyter notebook ====
$ sudo apt install libsqlite3-dev libreadline6-dev libbz2-dev libssl-dev libsqlite3-dev libncursesw5-dev libffi-dev libdb-dev libexpat1-dev zlib1g-dev liblzma-dev libgdbm-dev libmpdec-dev
* 参考サイト: [[https://qiita.com/kazetof/items/adeb331c99d408853f07 | pyenv, pipenv 環境でjupyter notebook使う時にsqliteに関するエラーが出たとき - Qiita]]
==== matplotlib ====
$ sudo apt install tk-dev
* 参考サイト: [[https://qiita.com/4hiziri/items/aba80f0bc92300ea22e2|PythonでTkinterがimportできなかった - Qiita]]
===== 参考サイト =====
* [[https://cloudpack.media/42033 | Macでanyenvをつかってpython環境構築(bash、fish対応) | cloudpack.media]]
* [[https://hi120ki.github.io/blog/posts/20190125/ | fish shell での anyenv 設定法 | Hi120kiのメモ]]
* [[https://www.mathpython.com/ja/375-ctypes/ | CentOS 7のPython 3.7.5はなぜかModuleNotFoundError: No module named ‘_ctypes’が出る - MathPython]]