ติดตั้ง Python3 บน CentOS 7

เดิม CentOS7 จะติดตั้ง Python 2.7.5 มาให้

ติดตั้งจาก Package Manager

อัพเดท repo

$ sudo yum update

ติดตั้ง Python3

$ sudo yum install -y python3

ตรวจสอบเวอร์ชัน

$ python3 --version
Python 3.6.8
$ pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
$ python3 -m pip --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

ติดตั้งผ่าน Package Manager จะได้ Python3.6 ติดตั้งอยู่ที่ /usr/bin/python3.6

ติดตั้งเวอร์ขันที่ต้องการจาก Source Code

ติดตั้ง required packages and dependencies

sudo yum groupinstall "Development Tools" -y
sudo yum install gcc open-ssl-devel bzip2-devel libffi-devel -y
sudo yum install zlib-devel

ดาว์นโหลดเวอร์ชัน 3.7.12 (04-Sep-2021)

wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz
tar xzf Python-3.7.12.tgz

ติดตั้ง

cd Python-3.7.12
./configure --with-openssl=/home/[username]/openssl
./configure --enable-optimizations
sudo make altinstall

Python3.7 จะติดตั้งอยู่ที่ /usr/local/bin

กำหนด default python ให้เป็น Python3.7

sudo ln -fs /usr/local/bin/python3.7   /usr/bin/python3
sudo ln -fs /usr/local/bin/pydoc3.7    /usr/bin/pydoc3
sudo ln -fs /usr/local/bin/pyvenv-3.7  /usr/bin/pyvenv3
sudo ln -fs /usr/local/bin/pip3.7      /usr/bin/pip3

สร้างไฟล์ทดสอบ helloworld.py

#!/usr/bin/python3

print("Hello World!")

เปลี่ยน permission

chmod 755 helloworld.py

รัน

./helloworld.py

เรื่องของ yum กับ Python3

ถ้าเซ็ตให้คำสั่ง python ชี้ไปที่ python3.7

sudo ln -fs /usr/local/bin/python3.7   /usr/bin/python   

จะใช้คำสั่ง yum ไม่ได้ โดยจะ error ประมาณนี้

$ sudo yum install tree
  File "/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

Because yum does not support Python3.

ให้แก้ไขไฟล์ /bin/yum จาก !/usr/bin/python เป็น !/usr/bin/python2 ก็จะรัน yum ได้ (แต่อาจเจอปัญหาอื่นตามมาอีก – เปลี่ยน default python กลับไปที่ python2 ดีกว่า)

อัพเดท pip

ตรวจสอบเวอร์ชัน

$ pip3 --version
pip 20.1.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

ไม่แน่ใจว่า require openssl openssl-devel กับ epel-release มั๊ย

sudo yum install openssl openssl-devel
sudo yum install epel-release

ตรวจสอบโมดูล ssl ถ้าปกติรัน python3 -m ssl แล้วจะไม่มีอะไรเกิดขึ้น

python3 -m ssl

อัพเดท pip

python3 -m pip install --upgrade pip

ตรวจสอบเวอร์ชันอีกที

$ pip3 --version
pip 21.2.4 from /home/jack/.local/lib/python3.7/site-packages/pip (python 3.7)