Python 3が使えないと体調が悪くなるので、インストールすることにします。
長年私は、趣味で使うプログラミング言語はRubyが主体だったんですが、統計学を勉強し始めたときに、numpyやpandasといったライブラリが使えるPythonの方が便利に思い、いつのまにかPythonが主体になっていました。
言語仕様としては、Rubyの方が洗練されていると思いますが、ライブラリの充実度では圧倒的にPythonの方が上です。
まあ、私が知らないだけかもしれませんが。
レッツ、インストール
まずは、パッケージ版のPython3をインストールすることにします。
$ sudo apt -y install python3 python3-pip python3-venv libffi-dev
念のため、ちゃんとインストールされたか確認します。
$ which python3 /usr/bin/python3
よし。
ソースインストール
最新版のPythonが使えなくても体調不良を起こすかもしれないので、がんばってインストールしときます。
カタカタカタ・・・
コンパイラのインストール。
$ sudo apt install -y 'build-essential'
必要なパッケージのインストール。
$ sudo apt-get -y install readline-doc libssl-doc
zlibのインストール。
$ wget https://zlib.net/zlib-1.2.11.tar.gz $ tar xvzf zlib-1.2.11.tar.gz $ cd zlib-1.2.11 $ ./configure --prefix=/usr/local $ make $ sudo make install
sqlite3のインストール。
別にこれがなくてもPython3のインストールは可能ですが、ipythonをインストールしたときに履歴機能が使えなくなってしまうので、がんばってインストールしておきます。
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz $ tar xvzf sqlite-autoconf-3300100.tar.gz $ cd sqlite-autoconf-3300100/ $ ./configure --prefix=/usr/local $ make $ sudo make install
そして、いよいよPython3のインストール。
$ wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz $ tar xvzf Python-3.8.0.tgz $ cd Python-3.8.0 $ ./configure --enable-optimizations --prefix=/usr/local $ make $ sudo make install
Ubuntu 16.04の時は、これだけの設定ではコンパイルエラーやインストールエラーが発生していた記憶がありますが、18.04では上手くいきました。
このままだと、pip3という、Pythonパッケージをインストールするコマンドのバージョンが古いので、こいつをアップグレードしておきます。
$ sudo /usr/local/bin/pip3 install --upgrade pip
最後に、ちゃんとインストールされたか調べておきます。
$ which python3 /usr/local/bin/python3 $ python3 -V Python 3.8.0
よし。
追記
Pythonのソースインストールが不完全でした。(´・ω・`)
pipコマンドでパッケージをインストールしようとすると、エラーになるのです。
$ sudo pip3 install ipython WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 〜省略〜 Could not fetch URL https://pypi.org/simple/ipython/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/ipython/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
どうやら、SSLモジュールが組み込めていない模様。