本ページはプロモーションが含まれています

Pythonをインストールする方法(Ubuntu)

Python開発環境

Ubuntu環境においてPythonをインストールする方法について記載します。
尚、インストール先は意図的に変更しない限り、

  • 2.x -> 3.x、 3.x -> 3.yといったメジャー、マイナーバージョンアップの場合は新規フォルダ
  • 3.8.x -> 3.8.yといったマイクロバージョンアップの場合は既存フォルダへ上書き

となります。
また、venvなどで作成した仮想環境は、新しいPythonバージョンで作成し直せばよいです。
自分でハマった点の解決策も交えて具体例も記載しながらまとめます。

スポンサーリンク

環境

  • OS: Ubuntu20.04LTS

事前準備(依存ファイルのインストール)

特に新規にPythonをインストールする場合は必要です。
こちらのサイト(python.jp) を参考にさせて頂きました。
参考までに、それぞれのモジュールの詳細については本記事の最後にリンクを載せておきます。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev tk-dev

インストールし忘れると後で実行できない機能など出てきてしまうので注意。
下記は筆者が実際に遭遇した例です。

    • build-essential(実際にはこのモジュールに含まれているgcc)がインストールされておらず、ビルドができない。

エラーメッセージ例(configureスクリプト実行時)

configure: error: no acceptable C compiler found in $PATH
    • libssl-devがインストールされておらずSSLのモジュールがビルドされないため、Pipをインストール出来ない。

エラーメッセージ例(Pipインストール時)

There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443)

などなど。
このような事態になったら、該当するライブラリをインストールして再ビルドをします。

Pythonをインストールする手順

インストールしたいVersionをダウンロード

Python公式サイトのダウンロードページ から入手出来ます。
下図の赤枠部をクリックすると現状のOSに合ったファイルのダウンロードが始まります。

また、同じページの少し下に各バージョン毎のダウンロードページへのリンクがあります(下図赤枠部)

リンク先のページ(リリースノート)には、一番下に各プラットフォーム毎のダウンロードファイルが一覧で記載されています。
今回はUbuntuにインストールするので、tar.xz形式またはtgz形式を選びます。

上記ファイルをブラウザ上でクリック、またはターミナルからコマンド(例えば下記のようにcurl)でダウンロードします。
$ curl -OL https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz

ダウンロードしたファイルを展開(解凍)

ダウンロードしたファイルを展開(解凍)します。
以下はコマンドラインで実行する例です。

    • tar.xz形式でダウンロードした場合
$ tar Jxfv Python-3.11.2.tar.xz
    • tgz形式でダウンロードした場合
$ tar xzf Python-3.11.2.tgz

configureスクリプトの実行

前記で展開したPythonディレクトリへ移動し、configureスクリプトを実行します。

参考configureスクリプトは、インストールに必要な環境やライブラリ等が揃っているかをチェックしMakeFileを生成します。
configure実行時のログはconfig.logに保存されます。何か問題があればこのログにエラーとして記述されている場合もあるので、チェックすると良いかもです。
$ cd Python-3.11.2               # Pythonディレクトリへ移動
~/Python-3.11.2$ ./configure   # configureスクリプトを実行
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for Python interpreter freezing... ./_bootstrap_python
    :
    :
configure: creating Modules/Setup.local
configure: creating Makefile     # Makefileが出来上がりました。
configure:

If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations

makeコマンドでコンパイル

makeコマンドを実行してコンパイルします。

参考makeコマンドは、前記のconfigureスクリプトから生成されたMakeFileに基づいてコンパイルを実施し、実行可能ファイルを生成します。

~/Python-3.11.2$ make # makeコマンドを実行
gcc -pthread -c -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Programs/python.o ./Programs/python.c
gcc -pthread -c -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall    -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Parser/token.o Parser/token.c
    :
    :
    :
sed -e "s,@EXENAME@,/usr/local/bin/python3.11," < ./Misc/python-config.in >python-config.py

依存ファイルが足りないなど何か問題がある時はこのログに記載される場合があります。
以下は、筆者が遭遇したlibssl-devモジュールがインストールされていなかった為に出てきたエラーメッセージです。

Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381

make altinstallコマンドでインストール

make altinstallコマンドを実行してインストールします。

参考make installコマンドは、makeで生成された実行可能ファイルを規定のディレクトリにコピー(インストール)します。

また、ここではPython公式リファレンスの下記のコメントに従い、make installの代わりにmake altinstallを使っています。

make install は python3 バイナリを上書きまたはリンクを破壊してしまうかもしれません。そのため、make install の代わりに exec_prefix/bin/pythonversion のみインストールする make altinstall が推奨されています。

2. Unix プラットフォームで Python を使う – 2.2. Python のビルド

尚、Pythonが入っていない環境に対して最初にインストールする際はmake installでも問題無いと思います。

~/Python-3.11.2$ sudo make altinstall # sudo付けるの忘れずに
if test "no-framework" = "no-framework" ; then \
        /usr/bin/install -c python /usr/local/bin/python3.11; \
else \
        /usr/bin/install -c -s Mac/pythonw /usr/local/bin/python3.11; \
fi
    :
    :
Looking in links: /tmp/tmpi_whs743
Processing /tmp/tmpi_whs743/setuptools-65.5.0-py3-none-any.whl
Processing /tmp/tmpi_whs743/pip-22.3.1-py3-none-any.whl
Installing collected packages: setuptools, pip
Successfully installed pip-22.3.1 setuptools-65.5.0

これでインストール作業は完了です。
下記で確認しましょう。

Pythonのバージョンの確認

$ python3.11 --version
Python 3.11.2

Pythonを起動してみます。

$ python3.11
Python 3.11.2 (main, Feb 18 2023, 21:04:15) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello')
Hello

事前準備のところに挙げた依存ファイルの中身など詳細は下記で参照出来ます。

  • 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

参考書籍

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

シェアする
ひびきをフォローする