Python 3 インストール

Python 2.7 は2020年1月1日をもってサポート終了しました(ただし2020年4月に最後のバージョン2.7.18が出ました)。Python 2.8 は出ません

ここでは Python 3 の最新版を一つだけインストールする方法を解説します。複数の Python を切り替えて使う方法は、例えばこちらの解説をご参照ください。

最新のものは Python 3.12 です。この後にさらに小数点が付いて 3.12.x のようなバージョン番号になります。3.12 が出た当初はまだ対応していないライブラリがあったのですが、3.12.2 くらいの時点でほぼすべてのライブラリが対応しましたので、ここでは 3.12.x の最新のものをインストールすることにします。

なお、Status of Python versions にあるように、現在3.8以上のバージョンがサポートされています。

インストールしないで Google Colaboratory で使う方法については実行のページに移しました。

ライブラリ名のタイポ(綴り間違い)を狙ってマルウェアをインストールさせる手口が見つかっています。ライブラリをインストールするコマンド pip3 install 〜 を打ち込むときは、なるべく、正しい例をコピペしましょう。

公式サイト Python.org からのインストール(Windows)

まず、初心者のかたで、今までどこかで Python をインストールしたけれどうまく設定できていないという場合は、[スタートボタン]→[⚙設定]→[アプリ]で、それっぽいものをアンインストールしてから始めるほうがいいかもしれません。

Python のインストーラを Download Python から最新版をダウンロードし、開きます。「Install Now」をクリックする前に、特に初心者のかたは、インストーラの最初の画面で「Add Python 3.12 to PATH」にチェックを付けるほうが楽だと思います。また、「Install Now」のすぐ下に、インストールされるパスが表示されます。私の場合、C:\Users\okumu\AppData\Local\Programs\Python\Python312 と表示されました。ここが全角だったり文字化けしていたりする場合は、下の説明を見てください。問題なければ「Install Now」をクリックします。ユーザーアカウント制御「このアプリがデバイスに変更を加えることを許可しますか?」が出ますので「はい」をクリックするとインストールが始まります。インストールが無事終われば「Close」をクリックします。

インストールされるパスが全角だったり文字化していたりする場合は、インストーラが起動した画面で「Customize installation」をクリックし、「Next」をクリックし、「Customize install location」の右の「Browse」をクリックし、「PC」→「C:」を選び、「新しいフォルダーの作成」で例えば Python というフォルダを作り、それをインストール場所に設定します。このあたりは実験が不十分なので、情報があれば教えてください。

確認として、Windows PowerShell(あるいは VS Code のターミナル、またはコマンドプロンプト)を立ち上げ、

where.exe python

と打ち込んで、正しい位置にある python コマンドが実行されているかを確認します(コマンドプロンプトなら where python でいいのですが PowerShell ではうまくいかないようです)。うまくいっていれば

C:\Users\ユーザ名\AppData\Local\Programs\Python\Python312\python.exe
C:\Users\ユーザ名\AppData\Local\Microsoft\WindowsApps\python.exe

と出ます(2行目はもともと入っている python コマンドで、後述のように、ストアアプリをダウンロードする画面を開くだけの機能しかありません)。これ以外の python.exe が出ても、それが最初の行でなければ、問題ありません。

同様に pip も確認します。

C:\Users\ユーザ名\AppData\Local\Programs\Python\Python312\Scripts\pip.exe

ほかに IDLE(Integrated Development and Learning Environment)という簡単な統合開発環境がインストールされますが、ここでは使いません。

いろいろなパッケージのインストールは pip コマンドを使って行います。インストールされるパッケージは PyPI にあるものです。

まずは、アップデートの必要なパッケージを、次のコマンドで調べます:

pip list --outdated

もし pip そのものが古いと言われたら、

pip install --upgrade pip

としてアップグレードします。これ以外に必要なパッケージは、その都度インストールします。例:

pip install matplotlib pandas jupyterlab

念のため、Windows PowerShell でパスを確認するには $env:path と打ち込みます。コマンドプロンプトなら path と打ち込みます。

追記:サードパーティのウイルス対策ソフトによっては、Python の動作、特に Jupyter Notebook に支障があるようです。Windows にもともと入っているウイルス対策ソフト Windows Defender なら大丈夫です。

なお、python のパスが設定されていない場合でも使えるように、py.exe というランチャー(起動用プログラム)が C:\Windows の中にインストールされます。こちらを使ってもかまいません。この場合、pip コマンドの代わりに py -m pip のように打ち込みます。

公式サイト Python.org からのインストール(Mac)

Download Python からインストーラをダウンロードし、インストールします。Universal バイナリですので、Intel でも Apple Silicon でも使えます。/Library/Frameworks/Python.framework/Versions/3.12/binpython3 などのバイナリが入ります。また、/usr/local/bin2to3, 2to3-3.12, idle3, idle3.12, pip3, pip3.12, pydoc3, pydoc3.12, python3, python3-config, python3-intel64, python3.12, python3.12-config, python3.12-intel64 というシンボリックリンクができます。

以下では、ホームディレクトリ(例えば私なら /Users/okumura)を ~ と略記しています。

インストールすると、Mac では(bash を使っていれば)~/.bash_profile または(zsh を使っていれば)~/.zprofile の最後にパスが付け加えられます:

# Setting PATH for Python 3.12
# The original version is saved in .zprofile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.12/bin:${PATH}"
export PATH

ターミナルを立ち上げ直すか、あるいはターミナルに(bash なら). ~/.bash_profile、(zsh なら)source ~/.zprofile と打ち込みます。

私は ~/.zshenv に環境変数を書いているのでそちらに移動しました。

以上ができたら、ターミナルに which python3 と打ち込んで、次のように表示されるか確認します:

/Library/Frameworks/Python.framework/Versions/3.12/bin/python3

いろいろなパッケージのインストールは pip3 コマンド(または python3 -m pip)を使って行います。インストールされるパッケージは PyPI にあるものです。まずは、一般ユーザで

pip3 list --outdated

と打ち込んで、更新の必要なパッケージがないか確認します。もし例えば pip が更新を要するなら、

pip3 install --upgrade pip

と打ち込みます。

必要なパッケージをインストールします。例:

pip3 install matplotlib pandas jupyterlab

これだけで、依存関係にあるパッケージ群(anyio appnope argon2-cffi argon2-cffi-bindings asttokens attrs Babel backcall beautifulsoup4 bleach certifi cffi charset-normalizer contourpy cycler debugpy decorator defusedxml entrypoints executing fastjsonschema fonttools idna ipykernel ipython ipython-genutils jedi Jinja2 json5 jsonschema jupyter_client jupyter_core jupyter-server jupyterlab jupyterlab-pygments jupyterlab_server kiwisolver MarkupSafe matplotlib matplotlib-inline mistune nbclassic nbclient nbconvert nbformat nest-asyncio notebook notebook_shim numpy packaging pandas pandocfilters parso pexpect pickleshare Pillow prometheus-client prompt-toolkit psutil ptyprocess pure-eval pycparser Pygments pyparsing pyrsistent python-dateutil pytz pyzmq requests Send2Trash six sniffio soupsieve stack-data terminado tinycss2 tomli tornado traitlets urllib3 wcwidth webencodings websocket-client)がインストールされます。

なお、この直後に

pip3 list --outdated

と打ち込むと、すでに更新が必要なパッケージがあるかもしれませんが、pip そのもの、あるいは普段使いの matplotlibpandas などが古い場合を除き、下手に更新すると依存関係を崩すので、更新の必要はありません。もし依存関係が崩れたら、必要なパッケージを再更新すれば直ります。例えば numpy を更新しすぎために numba に不具合が生じたならば、pip3 install --upgrade numba とすれば、numba が動くように numpy をダウングレードしてくれるはずです。

なお、このとき “Defaulting to user installation because normal site-packages is not writeable” というメッセージが出ますが、これはシステムの site-packages ディレクトリは管理者権限がないと書き込めないので ~/Library/Python/3.12/lib/python/site-packages にインストールしたということを意味します。また、実行ファイルが ~/Library/Python/3.12/bin にインストールされますので、こちらにもパスを通しておきます。具体的には ~/.bash_profile または ~/.zprofile にさきほど追加されたものを

PATH="/Library/Frameworks/Python.framework/Versions/3.12/bin:${PATH}"
PATH="${HOME}/Library/Python/3.12/bin:${PATH}"
export PATH

のように書き直して、読み込み直します。

Python 3.12.x をインストールすると、システムの「アプリケーション」に Python 3.12 というフォルダ(/Applications/Python 3.12)が作られます。この中に Install Certificates.command というシェルスクリプトがあります。これはPythonからWebをアクセスする際のSSL/TLSルート証明書をインストールするためのものです。インストーラはこれを実行せよと言ってきますが、特に実行しなくても、Webアクセス用のパッケージ requests をインストール(pip3 install requests)する際に入る certifi が面倒を見てくれますので、不要だと思います。

一般的なパッケージは簡単にインストールできるはずですが、ソースコードでしか提供されていないパッケージもたまにあります。そういったものをインストールするには、あらかじめターミナルに xcode-select --install と打ち込んでコマンドラインツールをインストールしておく必要があります。中には、ビルドに gfortran が必要なものもあります。Homebrew なら brew install gcc で入ります(巨大ですし、初心者は入れないほうがいいでしょう)。

ときどき、アップデートの必要なパッケージを、次のコマンドで調べます:

pip3 list --outdated

パッケージをアップデートするには、次のように打ち込みます:

pip3 install --upgrade パッケージ名をスペースで区切って並べる

Python をアンインストールするには /Library/Frameworks/Python.framework および ~/Library/Python を消します。/usr/local/bin にできたシンボリックリンクも消します。~/.bash_profile の類に追加した PATH も消します。

macOS に最初から入っている Python

macOS では、ターミナルに xcode-select --install と打ち込んでコマンドラインツールをインストールすると、universal binary の /usr/bin/python3 が入ります(macOS Sonoma 14.3 時点では Python 3.9.6)。公式サイトの Python と同様に使えるはずです。

Homebrew によるインストール(Mac)

Homebrew(ホームブルー)というパッケージマネージャを使っているなら、ターミナルに brew install python3 と打ち込めば、簡単に最新の Python が入ります。入るものは Python.org からインストールするものとほぼ同等ですが、まったく同じではありません(詳しくは Python — Homebrew Documentation 参照)。

AlmaLinux 9.3 でのインストール

$ python3 --version
Python 3.9.18

Python 3.9.18 が入っています(もし入っていなければ sudo dnf install python3)。追加でpipを sudo dnf install python3-pip として入れます。あとは pip で必要なパッケージを入れます。


これ以降はあまり見直していないので古くなっているかもしれません。

(Windows)WSL2のUbuntuのPython

WSL2のUbuntuの入れ方については、WindowsのWSL2でVS Codeを使って開発をご覧ください。ちなみに、私はWindows側をほとんど使いませんので、マシンのメモリ16Gのうち12GをUbuntuで使いたいと思いました(デフォルトは半分の8Gになります)。そのため、Windows側のホームディレクトリ(C:\Users\ユーザ名)に .wslconfig というファイルを作り、次のように書き込んでおきました:

[wsl2]
memory=12GB

GPUのあるマシンなら、WindowsとWSL2で使えるNVIDIAドライバを、Windows側でインストールしておきます。

WSL2 の Ubuntu 20.04 には python3 がすでに入っています。念のためアップグレード:

sudo apt update
sudo apt upgrade

python3 --version と打ち込むと Python 3.8.10 と表示されます。pip がないのでインストールします:

sudo apt install python3-pip
pip install --upgrade pip
pip install matplotlib pandas jupyterlab japanize-matplotlib

これで python3ipython が使えます。

Jupyter Lab を使う際には、あらかじめ使いたいブラウザを環境変数で設定しておきます。例:

export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

また、

jupyter lab --generate-config

と打ち込むと、~/.jupyter/jupyter_lab_config.py という設定ファイルができますので、その中の

# c.ServerApp.use_redirect_file = True

というところを

c.ServerApp.use_redirect_file = False

と書き直します。これで、Ubuntu のシェルで jupyter lab と打ち込めば、Windows 側のブラウザが開いて Jupyter Lab が使えるはずです。

Google Colab を使う

Google Colaboratory については実行のページに移しました。

Azure Notebooks を使う

https://notebooks.azure.com は Google Colab と同じようなサービスです。

Kaggle の notebook (kernel) を使う

Jupyter Notebook が使えます。

Google Colab のようなサーバを立ち上げる

サーバ側に Python をインストールし、jupyter 等を入れておきます。サーバ側で jupyter notebook --generate-config を実行し、生成された ~/.jupyter/jupyter_notebook_config.py を編集してリモートからの接続を許可します。

c.NotebookApp.allow_remote_access = True
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888

パスワードを設定するには、Python で from notebook.auth import passwd; passwd() を実行し、パスワードを打ち込み、表示されるパスワードのハッシュを ~/.jupyter/jupyter_notebook_config.py に記入します:

c.NotebookApp.password = 'sha1:0eced8e273ef:1ef78265e258e76cc0d01e60afcc8df50ea58f8d'

これで、サーバ側で、重要なものの入っていないディレクトリの中で nohup jupyter notebook & を実行し、リモートのブラウザで http://ホスト名:8888 をアクセスします。

パスワードを設定しない場合は、jupyter 起動時に出るトークンを含んだ URL にアクセスします。

このままではローカルユーザの権限ですべてのファイルにアクセスできてしまいますので、不特定多数の人に使ってもらう際には要注意です。

もっと本格的にやるには JupyterHub を立ち上げましょう。

Brython

Brython(Browser Python)はWebブラウザの中で動くPython(つまりJavaScriptで実装したPython)です。自分のWebページ内で動かすことができます。こちらで試せます。

東京書籍の EduTown プログラミング で使っているのも brython です。

その他の学習用環境

Jupyter のサイトで Try it in your browser のボタンをクリックすることでも Jupyter Notebook が試せます。ほかにも、オンラインで種々の言語の実行環境を提供するサービスがいくつかあるようです。CoCalc とか repl.it とか codepad とか ideone とか。

初心者の学習用に作られたオンラインプログラミング環境 ビットアロー(Bit Arrow)では、ブラウザ上で JavaScript、ドリトル、簡易C、DNCL、Python が使えます。Python はブラウザの JavaScript で実行することも、サーバ側の Python 3 を実行することもできます。後者の場合は matplotlib の最小限の機能も使えます。日本語 Python PyPEN も実験中。

PyPy という JavaScript の JIT コンパイラがあり、ブラウザ上で実行できます(お試しサイト pypyjs.org)。グラフィックスはできないようです。

QGIS(オープンソースのGISソフトウェア)にもPythonが含まれています。

スマホや電卓でPython

iOS/iPadOS に iSH という無料のアプリ(中身は Alpine Linux)を入れて

apk add python3 py3-pip

と入力すると python3 コマンドや pip コマンドが使えるようになります。最初はOSが許可を求めてきますので許可を与えます。その間に apk コマンドのほうはタイムアウトしてしまうことが多いため、エラーになったら上記コマンドを再度投入します(矢印キーを上にスワイプすると一つ前のコマンドに戻ります)。うまくいったら python3 と打ち込むと Python が起動します。たいへん便利です。残念ながら日本語は表示できません。

ほかに、iOS用の Pythonista 3 というアプリ(有料)でPythonが使えます。

Carnets - Jupyter というアプリ(無料)は iOS・iPadOS で動く Jupyter notebook 環境です。Python インタープリタも入っており、Numpy、Sympy、Matplotlib、Pandas などが含まれ、なんと OpenCV も使える そうです。

カシオの電卓 fx-CG50 などで MicroPython という Python のサブセットが使えるようです。