Python
Ubuntu
macos
pyenv
ubuntu16.04

[Mac/ubuntu]最新Python実行環境構築手順

目的

任意のバージョンのpythonを選べるようにし、常に最新のバージョンを利用できるようにする。
実行環境ごとに依存ライブラリが分離された環境を準備する。
システムワイドに環境を汚染せず、ユーザごとに任意のPythonを実行可能とする。

anyenv+anyenv-updateインストール

ndenvツールの導入を容易にしたり、envツールのアップデートを容易にするためにanyenvから入れていく。

$ git clone https://github.com/riywo/anyenv ~/.anyenv

環境設定

Macの場合

$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ git clone https://github.com/znz/anyenv-update.git ~/.anyenv/plugins/anyenv-update

Ubuntuの場合

$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.profile
$ echo 'eval "$(anyenv init -)"' >> ~/.profile
$ exec $SHELL -l
$ git clone https://github.com/znz/anyenv-update.git ~/.anyenv/plugins/anyenv-update

pyenv+pyenv-virtualenvインストール

開発環境ごとに依存関係を分離するため、pyenv-virtualenvをあわせて導入。

$ anyenv install pyenv
$ exec $SHELL -l
$ git clone https://github.com/yyuu/pyenv-virtualenv ~/.anyenv/envs/pyenv/plugins/pyenv-virtualenv

任意のバージョンのpythonをインストール

ubuntuの場合の関連パッケージ導入

$ sudo apt install build-essential zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
$ pyenv install 3.x.x

最近、MojaveにアップグレードしたMacでインストールに失敗する場合

zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1

上記のようなエラーが出てインストールに失敗する場合は下記のコマンドを試す

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

上記のコマンドを実行しても下記のようなエラーがでる場合

installer: Error - the package path specified was invalid: '/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg'.

Command Line Tools (macOS 10.14) for Xcode 10パッケージを下記のURLからダウンロードしてくる
https://developer.apple.com/download/more/

Macでopensslが入っているにも関わらず3.7.0以上がインストールできない場合

下記のようなエラーが出る場合

ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

下記の対応で、openssl1.1.1を使用

$ brew install 'openssl@1.1'
$ CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl@1.1)" pyenv install 3.7.0

インストール可能なバージョンの一覧を見たい場合

$ pyenv install --list

最新のバージョンのpythonがインストールできない場合

$ anyenv update

切り離された実行環境をカレントディレクトリに作成

$ pyenv virtualenv 3.x.x my-develop-environment
$ pyenv local my-develop-environment