事前準備
下記コマンドを実行して、各パッケージを導入する
yum install gcc openssl-devel bzip2-devel libffi-devel
libffi-develは、7.3.1以降でインストール時に必要なパッケージ
インストールするソースコード
Pythonの公式から拾ってくる。
Python.org:https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
ソースコードを展開
ここでは、次の場所に展開します。
ソースコード:/usr/local/src/Python-3.7.x
インストール先:/usr/local/Python3.7/default
※今後バージョンを変更することを考えてシンボリックリンク経由でインストールする
保存先:/usr/local/Python-3.7.1
展開~インストールまで
ファイルを解凍し回答先へ移動
mkdir /usr/local/src/Python-3.7.1
tar xzf Python-3.7.1.tgz -C /usr/local/src/Python-3.7.1
cd /usr/local/src/Python-3.7.1
バージョン変更を容易にするためのシンボリックファイル作成
mkdir /usr/local/Python3.7/Python-3.7.2rc1
ln -s /usr/local/Python3.7/Python-3.7.2rc1 /usr/local/Python3.7/latest
ln -s /usr/local/Python3.7/latest /usr/local/Python3.7/default
インストール
cd /usr/local/src/Python-3.7.1
./configure --enable-optimizations --prefix=/usr/local/Python3.7/default
make -j4
make altinstall
※ make の-jオプションはコンパイル時のCPUの数を指定できる、複数あるなら複数個指定、無いなら-jを付与しないで実行
pipを使えるようにする
Pythonのモジュールを管理するツールにpipがあり、ほぼ必須といえる。3.4系以降のpythonを導入した場合は、pipが自動でインストールされるが、今回の方法だとパスが通らないので、次の手順を実施する。
echo "export PATH="/usr/local/Python3.7/default/bin:$PATH"" >> /etc/profile
ln -s /usr/local/Python3.7/default/bin/pip3.7 /usr/local/Python3.7/default/bin/pip
以下のコマンドを実行して、バージョンが出力されるか確認する
# pip -V
pip 10.0.1 from /usr/local/Python/lib/python3.7/site-packages/pip (python 3.7)
pythonのバージョンを確認する。
# su -
# python --version
Python 3.7.1
- Python 2.7.x と表示された場合
その環境には、別なpythonが導入されているため、そっちにパスが通っています。
ので、python3用のパスを通します。下記コマンドを実行してください。
ln -s /usr/local/Python3.7/default/bin/python3.7 /usr/local/Python3.7/default/bin/python
ln -s /usr/local/Python3.7/default/bin/python /usr/local/bin/python
ln -s /usr/local/Python3.7/default/bin/python /usr/local/bin/python3
- 使用可能なモジュールを確認しつつ、インストールが出来たか確認
下記を記述して実行する。
# cat help_modules.py
# -*- coding: utf-8 -*-
# prints a list of existing modules
print(help('modules'))
実行する。現在使用可能なモジュール一覧がでてくればインストール成功
# python help_modules.py
Please wait a moment while I gather a list of all available modules...
/usr/lib64/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion 'g_type_from_name (name) == 0' failed
import gobject._gobject
BaseHTTPServer cProfile inspect rpmUtils
Bastion cStringIO io runpy
CDROM calendar ipaddress sched
CGIHTTPServer cgi itertools schedutils
ConfigParser cgitb json select
Cookie chunk keyword selinux
DLFCN cmath lib2to3 sets
DocXMLRPCServer cmd liblzma setuptools
:(以下略)