tkm_71のブログ

自分のための備考録みたいなものです。

Mac(El Captitan) にPython3系を入れてみた

今回はMacに、Python3系を入れようとしたので、その備考録。
Macには元々、Python2.7が入っていたけど、それも共存させながら切り替えて使用できるっぽいので、それを試してみました。

環境

  • Mac (OS X El Capitan 10.11.4)
  • HomeBrewが使える

pyenvの導入

pythonのバージョンを管理するために導入する。
HomeBrewで一発。

$ brew install pyenv

Macにパスを設定

参考[1]より丸っとコピペさせてもらいました。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

Pythonのインストール

今回は「Python 3.5.0a4」を入れてみようかと。

$ pyenv install --list        //とりあえず何があるか確認する
$ pyenv install 3.5.0a4

ここでエラー

以下のようなエラーが出た。

Downloading Python-3.5.0a4.tgz...
-> https://www.python.org/ftp/python/3.5.0/Python-3.5.0a4.tgz
Installing Python-3.5.0a4...
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/yyuu/pyenv/wiki/Common-build-problems


BUILD FAILED (OS X 10.11.4 using python-build 20141028)

Inspect or clean up the working tree at /var/folders/89/bc34h7h57g993dw_17pryfb00000gn/T/python-build.20160504030211.19754
Results logged to /var/folders/89/bc34h7h57g993dw_17pryfb00000gn/T/python-build.20160504030211.19754.log

Last 10 log lines:
(cd /Users/takuma/.pyenv/versions/3.5.0a4/share/man/man1; ln -s python3.5.1 python3.1)
if test "xupgrade" != "xno"  ; then \
		case upgrade in \
			upgrade) ensurepip="--upgrade" ;; \
			install|*) ensurepip="" ;; \
		esac; \
		 ./python.exe -E -m ensurepip \
			$ensurepip --root=/ ; \
	fi
Ignoring ensurepip failure: pip 6.1.1 requires SSL/TLS

解決法を検索

ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?」でググッて、以下を実行

$ xcode-select --install

CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 3.5.0a4

CFLAGS=-I/usr/include/openssl \
LDFLAGS=-L/usr/lib64 \
pyenv install -v 3.5.0a4

効果なし…
以上のことをやってみても、エラーは解消しなかった。

今回の解決法

今回は以下の方法で、無事にPython 3.5.1を入れることができました。

pyenvのアップデート

pyenvのバージョンを調べてみたところ「pyenv-20150404」が私のには入っているようでした。
しょうがないので、最新版を入れてみることに。

brewのアップデート

pyenvのバージョンを最新にするために、brewをアップデートしてみた。
方法は以下。

$ brew update

但し、ここで以下のようなエラーが出てしまった場合は

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/brew.rb:15:in `<main>'

たぶん、このままではbrewコマンドが一切使えない気がするので、以下を実行。

//一旦brewのディレクトリを元に戻す
$ cd /usr/local
$ git reset --hard && git clean -df

$ sudo chown -R $(whoami):admin /usr/local
brew update

これでbrewが最新にアップデートできた。

$ brew --version
Homebrew 0.9.9 (git revision f653c; last commit 2016-05-04)

このあと、pyenvを最新にするために以下を。

$ brew install pyenv
Error: pyenv-20150404 already installed
To install this version, first `brew unlink pyenv`

$ brew unlink pyenv
Unlinking /usr/local/Cellar/pyenv/20150404... 5 symlinks removed

$brew install pyenv

これでpyenvが最新になった。

$ pyenv --version
pyenv 20160422

あとはこの状態で下を実行すると、「pyenv-20150404」ではでてこなかった、「python 3.5.1」が出てきた。

//インストールできるリストを確認
$ pyenv install --list

//インストールしてみる
$ pyenv install 3.5.1

以上でpython3.5.1を入れることができました。




Pythonを3.5.1に切り替える

インストールだけでは以下のようになっている.

$ pyenv versions
* system (set by /Users/takuma/.pyenv/version)
  3.5.1

Python3系に切り替えてみる。

$ pyenv global 3.5.1
$ pyenv rehash

確認。

$ pyenv versions
  system
* 3.5.1 (set by /Users/takuma/.pyenv/version)

$ python --version
Python 3.5.1

長くなったけど、これでPython3.5.1のインストールができて使用できる状態になりました。