Machine Intelligence な TensorFlow を使ってみたくて、その前に Python をインストールして、使えるところまで調べてみました。
環境
- macOS Sierra バージョン 10.12.3
- Python 3.6.0
Python 3 のインストール
Mac には標準で Python 2.7.10 がインストールされているようなのですが、最新版は Python 3 のようですので、Python 3 をインストールすることにしました。 まだ Python 2 でしか動かない有用なライブラリーがあるらしいことも認識して、Python 3 を使おうと思いました。
現在は Python 3 が最新版の Python ですが、 Python 2 もまだ活発に利用されています。なのであなたのプロジェクトを両方のメジャーリリースにおいて動作可能にしておくのがよいでしょう。このガイドでは、 Python 2 と 3 を同時にサポートするにはどうすればよいかを解説します。
…略…
コア開発者の視点から Python3 が世に出てきたが理由を読みたい場合は、 Nick Coghlan の Python 3 Q & A または Brett Cannonによる `Why Python 3 exists がおすすめです。
Python のサイトでは Mac に Python をインストールする際にはインストーラをダウンロードしてインストールするように記載されているようです。
4.1. MacPython の入手とインストール(原文)
Mac OS X 10.8 には Apple によって Python 2.7 がプリインストールされています。Python の Web サイト (https://www.python.org) から最新バージョンの Python 3 を取得しインストールすることもできます。新しい Intel の CPU でも古い PPC の CPU でもネイティブに動作する “ユニバーサル・バイナリ” ビルドの最新のものがあります。
が、Homebrew にもあるようなので、Homebrew からインストールしてみました。
Homebrew は前にインストールしておいたものです。
Homebrew で python を検索してみます。
$ brew search python
app-engine-python micropython python3
boost-python python wxpython
gst-python python-markdown zpython
homebrew/apache/mod_python Caskroom/cask/kk7ds-python-runtime
homebrew/python/vpython Caskroom/cask/mysql-connector-python
python3 がそれかな。
Python 3 をインストールします。
$ brew install python3
==> Installing dependencies for python3: readline, sqlite, gdbm, xz
==> Installing python3 dependency: readline
==> Downloading https://homebrew.bintray.com/bottles/readline-7.0.1.sierra.bottl
######################################################################## 100.0%
==> Pouring readline-7.0.1.sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local.
macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:
LDFLAGS: -L/usr/local/opt/readline/lib
CPPFLAGS: -I/usr/local/opt/readline/include
==> Summary
🍺 /usr/local/Cellar/readline/7.0.1: 46 files, 2M
==> Installing python3 dependency: sqlite
==> Downloading https://homebrew.bintray.com/bottles/sqlite-3.16.2.sierra.bottle
######################################################################## 100.0%
==> Pouring sqlite-3.16.2.sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local.
macOS provides an older sqlite3.
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:
LDFLAGS: -L/usr/local/opt/sqlite/lib
CPPFLAGS: -I/usr/local/opt/sqlite/include
==> Summary
🍺 /usr/local/Cellar/sqlite/3.16.2: 11 files, 2.9M
==> Installing python3 dependency: gdbm
==> Downloading https://homebrew.bintray.com/bottles/gdbm-1.12.sierra.bottle.tar
######################################################################## 100.0%
==> Pouring gdbm-1.12.sierra.bottle.tar.gz
🍺 /usr/local/Cellar/gdbm/1.12: 18 files, 486.9K
==> Installing python3 dependency: xz
==> Downloading https://homebrew.bintray.com/bottles/xz-5.2.2.sierra.bottle.tar.
######################################################################## 100.0%
==> Pouring xz-5.2.2.sierra.bottle.tar.gz
🍺 /usr/local/Cellar/xz/5.2.2: 91 files, 1.4M
==> Installing python3
==> Downloading https://homebrew.bintray.com/bottles/python3-3.6.0.sierra.bottle
######################################################################## 100.0%
==> Pouring python3-3.6.0.sierra.bottle.tar.gz
==> Using the sandbox
==> /usr/local/Cellar/python3/3.6.0/bin/python3 -s setup.py --no-user-cfg instal
==> /usr/local/Cellar/python3/3.6.0/bin/python3 -s setup.py --no-user-cfg instal
==> /usr/local/Cellar/python3/3.6.0/bin/python3 -s setup.py --no-user-cfg instal
==> Caveats
Pip, setuptools, and wheel have been installed. To update them
pip3 install --upgrade pip setuptools wheel
You can install Python packages with
pip3 install <package>
They will install into the site-package directory
/usr/local/lib/python3.6/site-packages
See: http://docs.brew.sh/Homebrew-and-Python.html
.app bundles were installed.
Run `brew linkapps python3` to symlink these to /Applications.
==> Summary
🍺 /usr/local/Cellar/python3/3.6.0: 3,597 files, 55.7M
readline, sqlite, gdbm, xz のパッケージに依存しているようで、一緒にインストールされたようでした。
python3
コマンドで Python 3 が使えるようです。
Mac は標準で Python 2 がインストールされていて、python
コマンドで Python 2 が使えるということのようです。
$ python3 --version
Python 3.6.0
$ which python3
/usr/local/bin/python3
3.6.0 がインストールされていることが確認できました。
Python 3 をインストールした直後のパッケージは次のようになっていました。
$ pip3 list --format=columns
Package Version
---------- -------
pip 9.0.1
setuptools 32.2.0
wheel 0.29.0
$ ls /usr/local/lib/python3.6/site-packages/
__pycache__ setuptools
easy_install.py setuptools-32.2.0-py3.6.egg-info
pip sitecustomize.py
pip-9.0.1-py3.6.egg-info wheel
pkg_resources wheel-0.29.0-py3.6.egg-info
pip, setuptools, wheel の 3 つのパッケージが標準でインストールされた状態のようです。
venv の環境を作る
仮想環境の作成と管理を行うためのモジュールが venv です。 venv は通常利用可能なもっとも新しいバージョンの Python をインストールします。複数のバージョンの Python がインストールされている場合、
python3
のように利用したいバージョンを指定して実行することで Python バージョンを選択できます。仮想環境を作るには、仮想環境を置くディレクトリを決めて、 そのディレクトリのパスを指定して、 venv をスクリプトとして実行します:
python3 -m venv tutorial-env
これは tutorial-env ディレクトリがなければ作成して、その中に Python インタプリタ、標準ライブラリ、その他関連するファイルを含むサブディレクトリを作ります。
実行してみます。
$ python3 -m venv tutorial-env
tutorial-env
という名前のディレクトリーにしてみました。
ディレクトリーに移動して、中を見てみます。
$ cd tutorial-env/
$ ls
bin include lib pyvenv.cfg
bin, include, lib のディレクトリーと、pyvenv.cfg ファイルが作成されたみたいです。
venv の環境を有効にする
仮想環境を作ったら、それを有効化する必要があります。
Windows の場合:
tutorial-env\Scripts\activate.bat
Unix や Mac OS の場合:
source tutorial-env/bin/activate
(このスクリプトは bash shell で書かれています。 csh や fish を利用している場合、代わりに利用できる activate.csh と activate.fish スクリプトがあります。)
仮想環境を有効化すると、シェルのプロンプトに利用中の仮想環境が表示されるようになり、python を実行するとその仮想環境の Python を実行するようになります:
$ source ~/envs/tutorial-env/bin/activate (tutorial-env) $ python Python 3.5.1 (default, May 6 2016, 10:59:36) ... >>> import sys >>> sys.path ['', '/usr/local/lib/python35.zip', ..., '~/envs/tutorial-env/lib/python3.5/site-packages'] >>>
実行してみます。
$ source bin/activate
(tutorial-env) $
最初に入っているパッケージは次の通りでした。
$ pip list --format=columns
Package Version
---------- -------
pip 9.0.1
setuptools 28.8.0
$ ls lib/python3.6/site-packages/
__pycache__ pkg_resources
easy_install.py setuptools
pip setuptools-28.8.0.dist-info
pip-9.0.1.dist-info
仮想環境には標準で 2 つのパッケージがインストールされているようです。
環境変数の $PATH
を見てみます。
(tutorial-env) $ echo $PATH
/Users/user/tutorial-env/bin:/Users/user/.nodebrew/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:./node_modules/.bin
仮想環境のディレクトリーの bin
が先頭に挿入されていました。
$ python --version
Python 3.6.0
python3
コマンドで仮想環境を作成したため、python
コマンドで python3
が呼び出しできるようです。
この仮想環境を有効にしている状態では Python 2 を実行することはできないことになるのかな。
venv の環境でパッケージをインストールする
パッケージ名を指定してそのパッケージの最新版をインストールすることができます:
(tutorial-env) $ pip install novas Collecting novas Downloading novas-3.1.1.3.tar.gz (136kB) Installing collected packages: novas Running setup.py install for novas Successfully installed novas-3.1.1.3
pip
でインストールするようです。
(tutorial-env) $ pip install novas
Collecting novas
Downloading novas-3.1.1.4.tar.gz (139kB)
100% |████████████████████████████████| 143kB 951kB/s
Installing collected packages: novas
Running setup.py install for novas ... done
Successfully installed novas-3.1.1.4
パッケージを確認します。
(tutorial-env) $ pip list --format=columns
Package Version
---------- -------
novas 3.1.1.4
pip 9.0.1
setuptools 28.8.0
(tutorial-env) $ ls lib/python3.6/site-packages/
__pycache__ pip-9.0.1.dist-info
easy_install.py pkg_resources
novas setuptools
novas-3.1.1.4-py3.6.egg-info setuptools-28.8.0.dist-info
pip
作成したディレクトリーの中の site-packages に novas がインストールされたようです。
venv を無効にする
You can deactivate a virtual environment by typing “deactivate” in your shell.
無効にしてみます。
(tutorial-env) $ deactivate
$
プロンプトの最初の (ディレクトリーの名前)
がなくなりました。
仮想環境が無効な状態のパッケージに影響がないことを確認してみます。
$ pip3 list --format=columns
Package Version
---------- -------
pip 9.0.1
setuptools 32.2.0
wheel 0.29.0
$ ls /usr/local/lib/python3.6/site-packages/
__pycache__ setuptools
easy_install.py setuptools-32.2.0-py3.6.egg-info
pip sitecustomize.py
pip-9.0.1-py3.6.egg-info wheel
pkg_resources wheel-0.29.0-py3.6.egg-info
novas のパッケージがないので、影響はないみたいでした。
終わり
一度調べてしまえばなんてことはないことだと思いますが、新しく覚えることが多くて、なかなか進めることができませんでした。 Python 2 がまだ現役とか知らないですし、ここには記載しませんでしたが、easy_install, setuptools, wheel とか知らないですし、Anaconda とか知らないですし。 基礎をすっ飛ばしても成長はないと思いますので、じっくりやっていきます。