====== 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]]