VagrantのUbuntu20.04上に最新版(2021/1/21時点)のPython3.9.1をソースからインストールする方法について説明しています。
※ 本ページはプロモーションが含まれています。
VagrantでUbuntu20.04の仮想マシンを作成・起動して、そこにPythonの最新バージョン3.9.1(2021/1/21時点)をソースからインストールしていきます(Ubuntu18.04でも同じ手順でできます。Ubuntu21.04、Ubuntu22.04は試してないです)。
◾️環境とバージョン情報です。
ホストPCのOS:macOS Big Sur(バージョン11.1)
Vagrant 2.2.7
VirtualBox 6.1.16
$ vagrant -v
Vagrant 2.2.7
$ VirtualBox -h
Oracle VM VirtualBox VM Selector v6.1.16
VagrantとVirtualBoxをインストールしてある事が前提で説明していきます。
まずは最新版のPythonをインストールするための仮想マシンを用意します。仮想マシンはVagrantを使って作ります。
VagrantでUbuntu20.04のBoxを取得し、そのBoxから仮想マシンを作成して起動するまでをやります。
ただ、Ubuntu20.04の仮想マシンの作成から起動までは別ページで説明していますので、そちらを参考にしていただければと思います。
Ubuntu 20.04 LTSのBoxをダウンロードして、仮想マシンを作成・起動する
Ubuntu18.04の場合についても別ページで説明していますので、Ubuntu18.04を使いたい方はそちらを参考にしてみてください。
Ubuntu 18.04 LTSのBoxをダウンロードして、仮想マシンを作成・起動する
それではPython3.9.1(2021/1/21時点の最新版)をインストールしていきます。これ以降については、Ubuntu 20.04上でやった事を書いていきます(*Ubuntu 18.04でも同じ手順でできます)。
まず初めてUbuntuにログインしたら、aptパッケージを更新しておきます(apt updateとapt upgrade)。
vagrant@vagrant:~$ sudo apt update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]
Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
〜
24 packages can be upgraded. Run 'apt list --upgradable' to see them.
vagrant@vagrant:~$ sudo apt upgrade -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
linux-image-5.4.0-64-generic linux-modules-5.4.0-64-generic linux-modules-extra-5.4.0-64-generic
The following packages will be upgraded:
〜
あとUbuntuには最初からPythonが入っていますので、現環境のPythonのバージョンなどを最初に確認しておきます。
vagrant@vagrant:~$ python -V
-bash: python: command not found
vagrant@vagrant:~$ python3 -V
Python 3.8.5
vagrant@vagrant:~$ which python3
/usr/bin/python3
vagrant@vagrant:~$ pip -V
-bash: pip: command not found
vagrant@vagrant:~$ pip3 -V
-bash: pip3: command not found
Python3.8.5が最初から入っていました。わりと新しいです。それではソースからPython3.9.1をインストールしていきます。
apt installコマンドでpython3.9をインストールできましたが、バージョンが3.9.0だったので、今回はソースから最新バージョンの3.9.1をインストールしていきたいと思います。
ソースはこちらのページからダウンロードできます(Sourceタブを選択する)。
ここではwgetコマンドでダウンロードします。
vagrant@vagrant:~$ wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz
--2021-01-20 17:31:21-- https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz
Resolving www.python.org (www.python.org)... 151.101.88.223
Connecting to www.python.org (www.python.org)|151.101.88.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18897104 (18M) [application/octet-stream]
Saving to: ‘Python-3.9.1.tar.xz’
Python-3.9.1.tar.xz 100%[================================================================>] 18.02M 13.3MB/s in 1.4s
2021-01-20 17:31:22 (13.3 MB/s) - ‘Python-3.9.1.tar.xz’ saved [18897104/18897104]
また、必要なライブラリをaptでインストールしておきます。
$ sudo apt install -y 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
次に、ダウンロードしたソースファイルをtarで展開し、展開されたディレクトリに移動します。
vagrant@vagrant:~$ tar xJf Python-3.9.1.tar.xz
vagrant@vagrant:~$ ls
Python-3.9.1 Python-3.9.1.tar.xz
vagrant@vagrant:~$ cd Python-3.9.1
vagrant@vagrant:~/Python-3.9.1$
そして、ビルドとインストールをします。
vagrant@vagrant:~/Python-3.9.1$ ./configure
〜
vagrant@vagrant:~/Python-3.9.1$ make
〜
vagrant@vagrant:~/Python-3.9.1$ sudo make install
〜
これで、python3.9.1がインストールできたはずです。vagrant@vagrant:~/Python-3.9.1$ exec "$SHELL"
確認してみます。
vagrant@vagrant:~$ python -V
-bash: python: command not found
vagrant@vagrant:~$ python3 -V
Python 3.9.1
vagrant@vagrant:~$ pip -V
-bash: pip: command not found
vagrant@vagrant:~$ pip3 -V
pip 20.2.3 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
Python3.9.1が使えるようになりました!またpipも一緒にインストールされています。
ただ、pythonコマンドとpipコマンドは使えないので、pythonコマンドで使えるようにしたい場合は、aliasで設定しておくと良いと思います。 ~/.bashrcファイルの最後にでもこの2行を追記します。
alias python="python3"
alias pip="pip3"
追記したら、再度execコマンドで設定を反映させます。
vagrant@vagrant:~$ exec "$SHELL"
コマンドを使用できるかを確認します。
vagrant@vagrant:~$ python -V
Python 3.9.1
vagrant@vagrant:~$ pip -V
pip 20.2.3 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
できました!
せっかくPythonをインストールしたので、インタラクティブモードで少し使ってみます。
インタラクティブモードにはpythonコマンドで入れます。
vagrant@vagrant:~$ python
Python 3.9.1 (default, Jan 20 2021, 17:47:56)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
計算をしたり、文字列を表示したり、カレンダーを表示してみます。
>>> 100 + 200 / 2
200.0
>>> print("Hello", "world!!!")
Hello world!!!
>>> import calendar
>>> print(calendar.month(2020, 12))
December 2020
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
>>> quit()
vagrant@vagrant:~$
インタラクティブモードから抜ける時は、"quit()"と入力するか、ショートカット"Ctrl + D"でできます。
以上簡単でしたが、Ubuntu上にPython3.9.1をソースからインストールする手順について説明しました。
ここでは直接ソースからPythonをインストールしましたが、Pythonをインストールする方法としてpyenvを使う方法もあります。
pyenvは、Pythonのシンプルなバージョン管理ツールです。様々なバージョンのPythonをインストールする事ができて、インストールしたバージョンを手軽に切り替える事が可能です。これによりPythonで何か作る時に、最新バージョンで試したり、過去のバージョンで試したりする事ができるようになります。
pyenv + Pythonの環境構築については別ページで説明してますので、そちらも参考にしていただければと思います。
(Ubuntu)Python3.9.1とpyenvをインストールする(Vagrant)
(macOS)pyenvとPython3.9をインストールする
1つのVagrantfileで複数台の仮想マシンを作り、仮想的なネットワークを構築する
(Vagrant)ホストPCと仮想マシン(ゲストPC)の共有ディレクトリの設定
(Vagrant)仮想マシンのバックアップ(Box)を取得し、そのBoxから新規に仮想マシンを作る
(Vagrant)saharaで仮想マシンをサンドボックス化(sandbox)し、作業前に戻せるようにする