Python 環境構築(Mac編)

f:id:Naotsugu:20211022202707p:plain


はじめに

古い情報があふれているため、2021年における Python のインストール手順についてまとめます。

Python のインストールは、オリジナルな Python か、科学技術計算向けのAnacondaディストリビューションを介するかのいずれかで行うことが多いです。

ここでは、オリジナルな Python 処理系の Python 3.10 のインストール手順について示します。

Windows編については以下を参照してください。

blog1.mammb.com


現在の OSX には Python 2 と Python 3 双方がプリインストールされています。Big Sur (11.6) では以下のバージョンとなっています。

$ python -V
Python 2.7.16

$ python3 -V
Python 3.8.2

バージョンについて特にこだわりがなければ、そのままプリインストールされたものを使い続けることもできますが、別途 Python をインストールするのが一般的です。


Mac環境へのインストール

ここでは、Homebrew によるインストールを行うこととします。異なるバージョンの Python を使い分ける場合には、pyenv でバージョン切り替えを行う方法もありますが、古いバージョンが必要だったり、厳密なバージョン指定が必要な場合以外は、Homebrew で直接インストールすれば十分です。

Homebrew のフォーミュラ(パッケージ)は、Python 3.7 以降、メジャー・マイナーのバージョン付きで、現在は以下のようなものが提供されています。

$ brew search python
==> Formulae
python@3.7     python@3.8     python@3.9     python@3.10    ...

Homebrew を使った場合、3.9.77 のようなパッチバージョンは自動で更新されるため、パッチバージョンまで固定したい場合は、pyenv のようなバージョンマネージャツールを使うと良いでしょう。

なお、現在フォーミュラは以下のような Aliases となっているため、python としてインストールすれば、python@3.9 がインストールされることになります。

python -> ../Formula/python@3.9.rb

3.9 系のインストールは以下のよう行えます。

$ brew install python

==> python@3.9
Python has been installed as
  /usr/local/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
  /usr/local/opt/python@3.9/libexec/bin

You can install Python packages with
  pip3 install <package>
They will install into the site-package directory
  /usr/local/lib/python3.9/site-packages

tkinter is no longer included with this formula, but it is available separately:
  brew install python-tk@3.9

See: https://docs.brew.sh/Homebrew-and-Python

バージョンを確認しておきましょう。

$ python3 --version
Python 3.9.7

同様に、最新の 3.10 系は以下のようにインストールできます。

$ brew install python@3.10


Python のバージョン切り替え

Homebrew で入れた Python は、unlink link でバージョンの切り替えを行うことができます。Homebrew 2.6.0 以前は、switch コマンドによりバージョン切り替えを行いましたが、現在 switch コマンドは廃止されているため、unlink link を使います。

現在のバージョンを確認しておきましょう。

$ python3 --version

Python 3.9.7

現在は、Python 3.9.7 が有効になっています。

バージョンは以下のように切り替えることができます。

$ brew unlink python3 && brew link --force python@3.10

Unlinking /usr/local/Cellar/python@3.9/3.9.7_1... 24 symlinks removed.
Linking /usr/local/Cellar/python@3.10/3.10.0_2... 24 symlinks created.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/python@3.10/bin:$PATH"' >> ~/.zshrc

これで Homebrew リポジトリへのシンボリックリンクが python@3.10 に切り替わります。

バージョン確認しておきましょう。

$ python3 --version
Python 3.10.0

$ pip3 --version
pip 21.2.4 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)


シンボリックリンクの切り替え時に、コンフリクトするファイルを強制的に上書更新する場合には以下のように --overwrite フラグを付けます。

$ brew link --force --overwrite python@3.8

また、リンク時に削除されるファイルのリストを事前に確認したい場合には以下のようにすることができます。

$ brew link --overwrite --dry-run python@3.8


venv で仮想環境を作成する

Python では、Python ランタイムのバージョンに加え、周辺ライブラリパッケージのバージョン管理が必要となります。ライブラリを(pipを使って)インストールすると、グローバルにインストールされるため、プロジェクトに応じたパッケージバージョンを利用するには実行環境を切り替える仮想環境を使います。

Python 3.4 までは、仮想環境のツールは pyvenv でしたが、Python 3.6 では非推奨となり、現在は venv が推奨ツールとなっています(旧来の virtualenv が venv として取り込まれました)。

venv を使うことで以下が実現できます。

  • システム全体で使うPython環境に影響を与えずにモジュールの追加・入れ替えを行う
  • 異なるバージョンの Python を使いわけたり、同じモジュールの複数のバージョンを使い分ける

仮想環境は、プロジェクトディレクトリで以下のように作成します。

$ mkdir python
$ cd python
$ python3 -m venv .venv

.venv は仮想環境のディレクトリ名で、好きな名前を付けることができます(.venv とすることが多いです)。

このコマンドを実行すると、.venvディレクトリが作成され、以下のようなスクリプトが配備されます。

$ tree .venv
.venv
├── bin
│   ├── Activate.ps1
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── pip
│   ├── pip3
│   ├── pip3.10
│   ├── python -> python3.10
│   ├── python3 -> python3.10
│   └── python3.10 -> /usr/local/opt/python@3.10/bin/python3.10
├── include
├── lib
│   └── python3.10
│       └── site-packages
│             └── ...
└── pyvenv.cfg

作成されたスクリプトを使って、仮想環境への切り替えを行います。

$ source .venv/bin/activate
(.venv) $

仮想環境への切り替えを行うと、プロンプトに仮想環境名が表示されるようになります(. ./.venv/bin/activate としても同様です)。これにより、仮想環境作成時の Python のバージョンが固定され、追加でインストールするパッケージも、この仮想環境内にインストールされることになります。

仮想環境では、.venv/bin のパスが先頭に追加されるため、以下のように python コマンドや pip コマンドが利用できます。

(.venv) $ python --version
Python 3.10.0

(.venv) $ pip --version
pip 21.2.4 from /Users/.../.venv/lib/python3.10/site-packages/pip (python 3.10)

仮想環境から抜けるには以下のようにします。

(.venv) $ deactivate
$

Python 3.9 用の仮想環境を作成したい場合には、以下のようにすることができます。

$ brew unlink python3 && brew link --force python@3.9
$ python3 -m venv .venv39
$ source .venv39/bin/activate
(.venv39) $ python --version
Python 3.9.7


pip でパッケージをインストールする

pip は、Python パッケージの管理を行うユーティリティで、Python 3.4 以降で標準付属されています。pip コマンドを利用することで、The Python Package Index に公開されているパッケージのインストールなどを行うことができます。

pip によるパッケージ操作は、通常、仮想環境で操作します。仮想環境で操作することで、プロジェクト別で利用するパッケージのバージョンを管理することができます。

pip のバージョンは以下のように確認できます。

(.venv) $ python -m pip --version
pip 21.2.4 from /Users/.../.venv/lib/python3.10/site-packages/pip (python 3.10)

仮想環境内の pip が使われていることがわかると思います。

仮想環境内では、パスが通っているので、python -m を付けなくても大丈夫です。仮想環境外での利用も考慮して、ここでは python -m を付けて記載します。

pip のアップグレードは以下のように行います。

(.venv) $ python -m pip install --upgrade pip

Requirement already satisfied: pip in ./.venv/lib/python3.10/site-packages (21.2.4)
Collecting pip
  Downloading pip-21.3.1-py3-none-any.whl (1.7 MB)
...
Successfully installed pip-21.3.1

pip によるパッケージのインストールは pip install で行います。

例えば、django パッケージのインストールは以下のようになります。

(.venv) $ python -m pip install django

Collecting django
  Downloading Django-3.2.8-py3-none-any.whl (7.9 MB)
 ・・・

折角なので、アプリを起動してみましょう。

(.venv) $ django-admin startproject sample
(.venv) $ cd sample
(.venv) $ python manage.py runserver

f:id:Naotsugu:20211102001100p:plain

起動できましたね。

pip 自体の操作は別の記事で説明します。




入門 Python 3 第2版

入門 Python 3 第2版

Amazon