Ubuntu環境においてPythonをインストールする方法について記載します。
尚、インストール先は意図的に変更しない限り、
- 2.x -> 3.x、 3.x -> 3.yといったメジャー、マイナーバージョンアップの場合は新規フォルダ
- 3.8.x -> 3.8.yといったマイクロバージョンアップの場合は既存フォルダへ上書き
となります。
また、venvなどで作成した仮想環境は、新しいPythonバージョンで作成し直せばよいです。
自分でハマった点の解決策も交えて具体例も記載しながらまとめます。
環境
- OS: Ubuntu20.04LTS
事前準備(依存ファイルのインストール)
特に新規にPythonをインストールする場合は必要です。
こちらのサイト(python.jp) を参考にさせて頂きました。
参考までに、それぞれのモジュールの詳細については本記事の最後にリンクを載せておきます。
インストールし忘れると後で実行できない機能など出てきてしまうので注意。
下記は筆者が実際に遭遇した例です。
-
- build-essential(実際にはこのモジュールに含まれているgcc)がインストールされておらず、ビルドができない。
エラーメッセージ例(configureスクリプト実行時)
-
- libssl-devがインストールされておらずSSLのモジュールがビルドされないため、Pipをインストール出来ない。
エラーメッセージ例(Pipインストール時)
などなど。
このような事態になったら、該当するライブラリをインストールして再ビルドをします。
Pythonをインストールする手順
インストールしたいVersionをダウンロード
Python公式サイトのダウンロードページ から入手出来ます。
下図の赤枠部をクリックすると現状のOSに合ったファイルのダウンロードが始まります。
また、同じページの少し下に各バージョン毎のダウンロードページへのリンクがあります(下図赤枠部)
リンク先のページ(リリースノート)には、一番下に各プラットフォーム毎のダウンロードファイルが一覧で記載されています。
今回はUbuntuにインストールするので、tar.xz形式またはtgz形式を選びます。

ダウンロードしたファイルを展開(解凍)
ダウンロードしたファイルを展開(解凍)します。
以下はコマンドラインで実行する例です。
-
- tar.xz形式でダウンロードした場合
-
- tgz形式でダウンロードした場合
configureスクリプトの実行
前記で展開したPythonディレクトリへ移動し、configureスクリプトを実行します。
configure実行時のログはconfig.logに保存されます。何か問題があればこのログにエラーとして記述されている場合もあるので、チェックすると良いかもです。
makeコマンドでコンパイル
makeコマンドを実行してコンパイルします。
参考makeコマンドは、前記のconfigureスクリプトから生成されたMakeFileに基づいてコンパイルを実施し、実行可能ファイルを生成します。
依存ファイルが足りないなど何か問題がある時はこのログに記載される場合があります。
以下は、筆者が遭遇したlibssl-devモジュールがインストールされていなかった為に出てきたエラーメッセージです。
make altinstallコマンドでインストール
make altinstallコマンドを実行してインストールします。
参考make installコマンドは、makeで生成された実行可能ファイルを規定のディレクトリにコピー(インストール)します。
また、ここではPython公式リファレンスの下記のコメントに従い、make installの代わりにmake altinstallを使っています。
make install は python3 バイナリを上書きまたはリンクを破壊してしまうかもしれません。そのため、make install の代わりに exec_prefix/bin/pythonversion のみインストールする make altinstall が推奨されています。
尚、Pythonが入っていない環境に対して最初にインストールする際はmake installでも問題無いと思います。
これでインストール作業は完了です。
下記で確認しましょう。
Pythonのバージョンの確認
Pythonを起動してみます。
(参考)依存ファイルの中身について
事前準備のところに挙げた依存ファイルの中身など詳細は下記で参照出来ます。
- build-essential : Informational list of build-essential packages
- libbz2-dev :high-quality block-sorting file compressor library – development
- libdb-dev : Berkeley Database Libraries [development]
- libreadline-dev : GNU readline and history libraries, development files
- libffi-dev : Foreign Function Interface library (development files)
- libgdbm-dev : GNU dbm database routines (development files)
- liblzma-dev : XZ-format compression library – development files
- libncursesw5-dev : developer’s libraries for ncursesw
- libsqlite3-dev : SQLite 3 development files
- libssl-dev : Secure Sockets Layer toolkit – development files
- zlib1g-dev : compression library – development
- uuid-dev : Universally Unique ID library – headers and static libraries
- tk-dev : Toolkit for Tcl and X11 (default version) – development files